只有一个M2M关系才能进入一次

时间:2013-07-20 20:13:46

标签: python django

我有项目和食谱(链接到它创建的项目),其中食谱使用through模型来定义食谱中的项目数。

现在我有以下问题;我想限制配方只有一次物品,无论数量多少。

因此,如果我有项Bread并添加Flour x1,Butter x2 Sunseeds x2。之后,如果有人试图再次添加其中一个项目,我想提出错误。

我怎么能这样做?

更新

unique_together将是recipe_iditem_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'

1 个答案:

答案 0 :(得分:1)

据我所知,Recipe有一个ManyToManyFieldItem,在直通表格中您定义了三个字段recipeForeignKey),{{1 (item)和ForeignKey。现在你想要的是,对于食谱,一个项目最多可以使用一次(使用item_count> = 1)。所以,是的,通过表格为item_countunique_together添加recipe会有效。