Django:limit_choices_to with with" through"中间表

时间:2017-04-09 15:48:07

标签: django forms

  

https://docs.djangoproject.com/en/1.10/ref/models/fields/
  " limit_choices_to在具有使用through参数指定的自定义中间表的ManyToManyField上使用时无效。"

为什么?如果我同时需要throughlimit_choices_to,该怎么办?

在这种情况下我应该从ModelForm回到简单Form并手动完成吗?或者有没有办法使用ModelForm

1 个答案:

答案 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))