0

こんなフォアキー関係あるんだ

class Product(models.Model):
    brochure = models.ForeignKey(MediaFile)

私のライブラリには多数の MediaFiles があるためForeignKeyRawIdWidget、クエリの数を減らすために a をよく使用します。

しかし、明らかにインライン モデルで「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)

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)
4

1 に答える 1

2

フォームフィールドを上書きする必要はありません。Django にはそのためのオプションがあります。

class ProductInline(admin.StackedInline):
    model = models.Product
    raw_id_fields = ['brochure']
    …

これは、私のStackedInlineまたはTabularInlineモデルでは問題なく機能します。

于 2013-08-21T14:09:21.843 に答える