https://docs.djangoproject.com/en/1.10/ref/models/fields/:
" limit_choices_to在具有使用through参数指定的自定义中间表的ManyToManyField上使用时无效。"
为什么?如果我同时需要through
和limit_choices_to
,该怎么办?
在这种情况下我应该从ModelForm
回到简单Form
并手动完成吗?或者有没有办法使用ModelForm
?
答案 0 :(得分:2)
我使用limit_choices_to
through
测试了ManyToManyField
。 令人惊讶的是它有效,尽管文档说它没有。
但是,如果它不适合您,您可以为ManyToMany
中的ModelForm
字段设置自定义查询集。
# models
class YourModel(models.Model):
some_attr = models.BooleanField()
class MyModel(models.Model):
my_field = models.ManyToManyField(YourModel, through=...)
# forms
class MyModelForm(forms.ModelForm):
...
my_field = forms.ModelMultipleChoiceField(queryset=YourModel.objects.filter(some_attr=True))