0

それが可能かどうかはわかりません。FormDjango (2.0)をビューで使用しようとFormset しています。ここに私のモデルがあります:

from uuid import uuid4

class Aliment(models.Model):
    id = models.CharField(max_length=36, primary_key=True, unique=True, default=uuid4, editable=False)
    libelle = models.CharField(max_length=50)
    def __str__(self):
        return self.libelle

class Menu(models.Model):
    id = models.CharField(max_length=36, primary_key=True, unique=True, default=uuid4, editable=False)
    libelle = models.CharField(max_length=50)
    aliments = models.ManyToManyField(Aliment, through='Ingredient')
    def __str__(self):
        return self.libelle

class Ingredient(models.Model):
    id = models.CharField(max_length=36, primary_key=True, unique=True, default=uuid4, editable=False)
    aliment = models.ForeignKey(Aliment, on_delete=models.CASCADE)
    menu = models.ForeignKey(Menu, on_delete=models.CASCADE)
    quantite = models.IntegerField(default=0)
    def __str__(self):
        return "({0}:{1})".format(self.quantite, self.aliment)

からFormset処理するために使用しています。ここに私のフォームがあります: ('aliment', 'quantite')Ingredient

class MenuModelForm(forms.ModelForm):
    class Meta:
        model = Menu
        fields = ['libelle',]

class IngredientModelForm(forms.ModelForm):
    class Meta:
        model = Ingredient
        fields = ['aliment', 'quantite',]

主な目的は、クラスを通じてMenuいくつかを持っていることです。JavaScript を使用して、 1 つのリスト (list1) からリスト (list2) にアイテムを動的に追加します。 AlimentIngredientAlimentMenu.Ingredient

ユーザーが list2 にアイテムを追加する唯一の方法は、list1 の「追加ボタン」をクリックすることです。

問題は、データベースからのすべてのインスタンスModelChoiceFieldを含む select に付属しています。Aliment

インスタンス に属するタプル('aliment.id', 'aliment.libelle', 'quantite')の種類を管理したいと思います。IngredientMenu

一方ではIngredient formset、次のようにテンプレートに表示できます。

<table>
    {% for item in menu.ingredient %}
        <tr>
            <td>
                <p name="{{ item.aliment.html_name }}" id="{{ fs.aliment.id_for_label }}"
                value="{{ item.aliment.id }}">{{ fs.aliment.libelle }}</p>
            </td>
            <td><input type="number" name="{{ item.quantite.html_name }}" value="{{ item.quantite.value }}" id="{{ item.quantite.id_for_label }}" /></td>
        </tr>
    {% endfor %}
</table>

一方、反復Alimentのインスタンスを取得する方法は何ですか?Ingredient formset

FormDjangoと Django の哲学がこのために作られているかどうかはわかりません。

いくつか提案をお願いします。

ありがとう !

4

1 に答える 1