Django中的ModelForm实例与特定领域定制查询集
-
10-07-2019 - |
题
我有一个模型不不同于以下内容:
class Bike(models.Model):
made_at = models.ForeignKey(Factory)
added_on = models.DateField(auto_add_now=True)
所有用户可能会在一些工厂,因此它们的用户配置文件的工作都有ManyToManyField
为Factory
现在我想构建一个ModelForm
Bike
但我想made_at
列表以组成当前用户只能工厂。这个想法是,用户应该能够增加他们已经组装自行车,并进入其工厂的自行车在做。
我该怎么做呢?
解决方案
您的问题可能是这方面的一个欺骗
ForeignKey的由django.forms.ModelChoiceField,这是一个ChoiceField其选择是一个模型查询集来表示。参见ModelChoiceField参考。
所以,提供一个QuerySet到该字段的查询集属性。取决于你的表格是如何构建的。如果你建立一个明确的形式,您将有场直接点名。
form.rate.queryset = Rate.objects.filter(company_id=the_company.id)
如果采取默认的ModelForm对象,form.fields["rate"].queryset = ...
这是在视图中明确地完成。没有黑客周围。
其他提示
尝试这样在视图中
form = BikeForm()
form.fields["made_at"].queryset = Factory.objects.filter(user__factory)
修改厂查询集,使得其标识用户工作在工厂。
Nowaday,你应该使用:
form.base_fields['alumno_item'].queryset = AlumnoItem.objects.prefetch_related(
'alumno',
'alumno__estudiante',
'alumno__estudiante__profile',
'item'
)
不隶属于 StackOverflow