1

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

现在我有以下问题;我想将配方限制为只有一次,无论数量如何。

因此,如果我有项目Bread并添加Flourx1,Butterx2 Sunseedsx2。之后,如果有人尝试再次添加其中一项,我想提出一个错误。

我怎么能那样做?

更新

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'
4

1 回答 1

1

据我了解,Recipe在通过表中,您定义了三个字段( )、( ) 和. 现在你想要这样,对于一个配方,一个项目最多可以使用一次(item_count >= 1)。所以,是的,通过表添加for和in 是可行的。ManyToManyFieldItemrecipeForeignKeyitemForeignKeyitem_countunique_togetherrecipeitem

于 2013-07-20T20:33:15.410 回答