-1

我创建了一个产品商店。

class Product(models.Model):
    name = models.CharField(verbose_name=_(u'name'), max_length=200)
    quantity = models.IntegerField(verbose_name=_(u'quantity'))

>>> Product.objects.create(name="egg", quantity="100")
>>> Product.objects.create(name="ham", quantity="10")

现在我想创建食谱,比如:用 3 个鸡蛋和一块火腿做的炒鸡蛋。我试图描述类似的东西:

class Recipe(models.Model):
    name = models.CharField(verbose_name=_(u'name'), max_length=200)
    items = models.ManyToManyField('Product', related_name='recipe_sets')

但卡在描述中所需产品的数量为一recipe

我应该把它quantity放在另一个模型中吗?如何计算份数(取决于产品数量)?是否有一种优雅的方式或应用程序来扣除产品(作为烹饪一道菜的结果)?

4

1 回答 1

1

你将需要另一张桌子。ManyToMany将创建一个链接您拥有的两个模型的中间表。但是,如果您更明确地了解该表的创建方式,则可以将字段添加到链接表中。

请参阅有关多对多关系的文档额外字段。基本上,你会有另一个模型:

class Ingredients(models.Model):
    product = models.ForeignKey(Product)
    recipe = models.ForeignKey(Recipe)
    quantity = models.SomeField(..)

然后更改您的Recipe定义ManyToManyField

items = models.ManyToManyField('Product', related_name='recipe_sets', through='Ingredients')
于 2013-07-24T04:53:53.987 回答