Django模型基于其他模型但具有特定字段值的限制选择

时间:2019-04-23 07:29:21

标签: python django django-models

我有2个模型,对此问题进行了简化。在Article模型中,如何基于choices=模型中具有特定Article.status值的条目来限制字段Category的{​​{1}}?

Category.type

为了透明起见,我知道我之前已经做过,但是我似乎不记得如何做或在我做过的地方找到项目。就像解决方案刚刚消失在我身上... * poof * 。魔术。

编辑:更改为class Article(models.Model): name = models.CharField(max_length=100) # Set choices= only to values of Category which have a type of 'foo' status = models.ForeignKey(Category) class Category(models.Model): name = models.CharField(max_length=10) type = models.CharField(max_length=10)

1 个答案:

答案 0 :(得分:1)

您可以在models.py中使用诸如limit_choices_to之类的东西:

category = model.ForeignKey(Category,limit_choices_to={'type':'the type you want'}

如果您想要更动态或更详细的信息,可以在ModelForm的 init 中指定特定字段的自定义查询集,例如:

self.fields['category'].queryset = Category.objects.filter(type='type_you_wanted')

如果要根据表单中选择的类别动态显示类别,则应看到以下内容:https://simpleisbetterthancomplex.com/tutorial/2018/01/29/how-to-implement-dependent-or-chained-dropdown-list-with-django.html