【发布时间】:2016-07-07 22:43:11
【问题描述】:
我有两个模型
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如何过滤产品?
【问题讨论】:
-
我找到了解决方案,和这里一样stackoverflow.com/questions/19305964/…
标签: python django django-models django-forms