簡體   English   中英

在InlineFormSet中過濾外鍵查詢集模型

[英]Filter foreign key queryset model in InlineFormSet

我有兩種模式

class Order:
    ...

class OrderItem:
    order = models.ForeignKey(Order, related_name='products')
    product = models.ForeignKey(Product)

class Product:
    user = models.ForeignKey(User)
    ...

我從以下模型創建InlineFormSet

FormSet = inlineformset_factory(Order, OrderItem)

在我看來,我稱之為

formset = FormSet()

但我得到的所有產品product ModelChoiceField。 如何過濾用戶擁有的產品?

如果我這樣做:

class BaseFormSet(BaseInlineFormSet):
    def __init__(self, *args, product_queryset=None, **kwargs):
        super().__init__(*args, **kwargs)

        if product_queryset:
            self.form.base_fields['product'].queryset = product_queryset

...

formset = FormSet(formset=BaseFormSet)

一切正常,但是在Django編寫的文檔中

注意不要更改base_fields屬性https://docs.djangoproject.com/en/1.9/ref/forms/api/#accessing-the-fields-from-the-form

沒有base_fields產品如何過濾?

使用self.form.fields如圖所示這里

更新以回應評論

form = OrderItemForm()
form.product.queryset = Product.objects.filter(..filter here..)
formset = FormSet(formset=BaseFormSet, form=form)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM