[英]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.