0

私は次のデータベーススキーマを持っています

class Ingredient(models.Model):
  title = models.CharField(max_length=255)

class Recipe(models.Model):
  # Many more fields that aren't important
  # ...
  ingredients = models.ManyToManyField(Ingredient, through='Measurement',
                                       blank=True, null=True)

class Measurement(models.Model):
  recipe     = models.ForeignKey(Recipe)
  ingredient = models.ForeignKey(Ingredient)
  amount     = models.CharField(max_length=255)

今、私はそれをインラインで表示したい

<!-- fields that are not important -->

<input type="text" name="ingredient" value="">
<input type="text" name="amount" value="">

したがって、ユーザーがテキストボックスの材料と量を入力すると、新しいエントリが材料テーブルに保存され、そのIDが測定テーブルに使用されます。また、手順やレシピのタイトルなど、いくつかの追加情報をレシピテーブルに保存する必要があります。どうすればそのような行動をとることができますか?

4

1 に答える 1

1

フォームセットモデルフォームセットについて学びます。次のようなものを使用できます。

formset = modelformset_factory(Measurement)

レシピと材料がたくさんある場合は警告します。各フォームの材料とレシピの選択のレンダリングは遅くなります。簡単な解決策は、オートコンプリート アプリを使用することです。

django-autocomplete-light の例:

autocomplete_light.register(Ingredient, search_fields=['title'])
autocomplete_light.register(Recipe)

formset = modelformset_factory(Measurement, 
    form=autocomplete_light.modelform_factory(Measurement))
于 2012-09-10T13:37:11.930 に答える