我有项目和食谱(链接到它创建的项目),其中食谱使用through
模型来定义食谱中的项目数。
现在我有以下问题;我想限制配方只有一次物品,无论数量多少。
因此,如果我有项Bread
并添加Flour
x1,Butter
x2 Sunseeds
x2。之后,如果有人试图再次添加其中一个项目,我想提出错误。
我怎么能这样做?
更新
unique_together
将是recipe_id
和item_id
上的解决方案吗?
更新2(部分代码)
class Recipe_Has_Items(models.Model):
recipe = models.ForeignKey('Recipe')
item = models.ForeignKey('Item')
quantity = models.IntegerField(validators = [MinValueValidator(0)])
def __unicode__(self):
return '%s (%d)' % (self.item, self.quantity)
class Meta:
verbose_name = 'Recipe\'s Item'
verbose_name_plural = 'Recipe\'s Items'
答案 0 :(得分:1)
据我所知,Recipe
有一个ManyToManyField
到Item
,在直通表格中您定义了三个字段recipe
(ForeignKey
),{{1 (item
)和ForeignKey
。现在你想要的是,对于食谱,一个项目最多可以使用一次(使用item_count> = 1)。所以,是的,通过表格为item_count
和unique_together
添加recipe
会有效。