我有这样的foreinkey关系
class Product(models.Model):
brochure = models.ForeignKey(MediaFile)
由于我的库中有很多MediaFiles,我通常会使用ForeignKeyRawIdWidget
来减少查询次数。
但显然在内联模型中使用'ForeignKeyRawIdWidget'并不会影响这一点。它仍然执行大量查询。
有谁知道这是为什么?
管理:
class ProductInline(admin.StackedInline):
model = models.Product
prepopulated_fields = {"slug": ("title",)}
def formfield_for_dbfield(self, db_field, **kwargs):
if db_field.name == 'brochure':
kwargs['widget'] = ForeignKeyRawIdWidget(db_field.rel)
return super(ProductInline, self).formfield_for_dbfield(db_field, **kwargs)
VS
class ProductAdmin(admin.ModelAdmin):
def formfield_for_dbfield(self, db_field, **kwargs):
if db_field.name == 'brochure':
kwargs['widget'] = ForeignKeyRawIdWidget(db_field.rel)
return super(ProductAdmin, self).formfield_for_dbfield(db_field, **kwargs)
答案 0 :(得分:2)
无需覆盖表单域。 Django可以选择:
class ProductInline(admin.StackedInline):
model = models.Product
raw_id_fields = ['brochure']
…
这适用于我的StackedInline
或TabularInline
型号。