Python Django模型限制基于另一个模型但具有特定字段值的选项
我有两个模型,简化了这个问题。在Python Django模型限制基于另一个模型但具有特定字段值的选项,python,django,django-models,Python,Django,Django Models,我有两个模型,简化了这个问题。在文章模型中,如何根据类别模型中具有特定类别.类型值的条目限制文章.status字段的选项 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 C
文章
模型中,如何根据类别
模型中具有特定类别.类型
值的条目限制文章.status
字段的选项
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)
为了透明起见,我知道我以前做过这件事,但我似乎不记得我是怎么做的,也不记得我在哪里找到了这个项目。就像解决方案在我身上消失了…*噗*。魔法
编辑:更改为
模型。ForeignKey
您可以在模型中使用类似于限制选项的内容。py:
category = model.ForeignKey(Category,limit_choices_to={'type':'the type you want'}
如果需要更动态或更详细的内容,可以在模型表单的init中指定特定字段的自定义查询集,如:
self.fields['category'].queryset = Category.objects.filter(type='type_you_wanted')
如果您想根据表单中选择的category.type动态显示类别,那么您应该看到:以及
category.type
和Article.status
?您可以设置status=models.ForeignKey(类别)
这将限制基于类别中的条目的选择这正是我想要的。我怎么能忘记将选择限制在和CharField
中更大的错误类型,而不是ForeignKey
。谢谢你,我的朋友。学到了一些新的东西,谢谢