Django管理员。限制多对多领域的选择

Ale*_*lla 3 django django-admin

我有一个多对多字段。我想限制管理员在其M2M小部件中显示的选择。

我有一个这样的模型:

class A(models.Model):
    b_field = models.ManyToManyField(B)

class B(models.Model):
    available = models.BooleanField()
Run Code Online (Sandbox Code Playgroud)

如何将窗口小部件中显示的B对象仅限制于那些拥有available = True

Sag*_*gar 5

limit_choices_to选项可以帮助你,

使用ModelForm或admin呈现此字段时,为该字段的可用选项设置一个限制(默认情况下,可以选择queryset中的所有对象)。可以使用字典,Q对象或返回字典或Q对象的可调用对象。

例如

class A(models.Model):
    b_field = models.ManyToManyField(B, limit_choices_to={'available': True})
Run Code Online (Sandbox Code Playgroud)