-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 個とハム 1 個から作るスクランブルエッグのようなレシピを作成したいと思います。私は次のようなものを説明しようとしました:

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

ただし、商品説明に1個あたりの必要個数を記載しておりrecipeます。

quantity他のモデルに入れるべきですか?サービング数はどのように計算できますか (製品の量によって異なります)? (1 皿を調理した結果として) 製品を控除するためのエレガントな方法またはアプリケーションはありますか?

4

1 に答える 1

1

別のテーブルが必要になります。ManyToManyあなたが持っている2つのモデルをリンクする中間テーブルを作成します。ただし、そのテーブルの作成方法がより明確である場合は、リンク テーブルにフィールドを追加できます。

多対多の関係に関するドキュメントの追加フィールドを参照してください。基本的に、別のモデルがあります。

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 に答える