3

親モデルから ManyToMany フィールドの値を編集するフォームを作成しようとしています。例として、次の 3 つのモデルに似たものがあります。

class Language(models.Model):
    label = models.CharField()


class Word(models.Model):
    language = models.ForeignKey(Language)
    word = models.CharField()
    entries = models.ManyToManyField(Entries, null=True, blank=True)


class Entries(models.Model):
    entry = models.CharField()

各言語には約 50 の単語があります。各 Word には、それぞれ 1 つまたは 2 つのエントリがあります。

次のように、特定の言語のエントリを編集するためのフォームセットを生成しています。

class WordForm(forms.ModelForm):
    class Meta:
        model = Word
        hidden = ('language', )

PronounFormSet = inlineformset_factory(Language, Word,
         can_delete=False, extra=0, form=WordForm)

これにより<select>、エントリを Word.entries に追加/削除できるようになります。ただし、ユーザーがフィールド Entries.entryを直接編集できるようにしたい(つまり、フィールドEntries.entryは CharField() 内にある必要があります)。これを許可するように WordForm を変更するにはどうすればよいですか?

これを行うためのより良い方法 (別のデータベース スキーマなど) がおそらくあることは知っていますが、レガシー実装によって大きく制限されています。

4

1 に答える 1