親モデルから 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 を変更するにはどうすればよいですか?
これを行うためのより良い方法 (別のデータベース スキーマなど) がおそらくあることは知っていますが、レガシー実装によって大きく制限されています。