我创建了一个产品商店。
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
放在其他模型中吗?如何计算份数(取决于产品数量)?是否有优雅的方式或应用程序来扣除产品(由于烹饪一道菜)?
答案 0 :(得分:1)
你需要另一张桌子。 ManyToMany
将创建一个链接您拥有的两个模型的中间表。但是,如果您更明确地创建该表的方式,则可以在链接表中添加字段。
请参阅文档extra fields on many to many relationships。基本上,你有另一种模式:
class Ingredients(models.Model):
product = models.ForeignKey(Product)
recipe = models.ForeignKey(Recipe)
quantity = models.SomeField(..)
然后更改Recipe
的{{1}}定义:
ManyToManyField