我正在尝试创建一个显示单词,含义和相关句子的页面。我希望这些能够以我可以编辑的形式显示,然后将更改保存到数据库中。此外,我希望能够在页面上显示多个表单。所以如果我有5个单词,我会在页面上得到5个表单,其中包含单词,含义和句子的区域,所有这些都是可编辑的。
我已经能够创建一个带有单词及其含义的表单。但是,我找不到使用表单显示相关句子(与我的Word类具有ManyToMany关系)的方法。
我读过有关modelformset_factory,BaseFormSet的内容,我知道你可以传递一个查询集来创建多个表单。但是,我正努力将它们全部融合在一起以创建我想要的形式。当我尝试将queryset与MeaningsForm一起使用时,它总是抛出一个错误,因为它只接受一个对象与一个查询集对象。
这是我目前的代码,它只显示一个单词及其相关含义。如果有一种方法可以使用更好的管理视图来执行我想要的操作。任何帮助/建议将不胜感激。
models.py
class Word(models.Model):
word = models.CharField(max_length = 300)
class Sentence(models.Model):
sentence = models.TextField(null=True)
word = models.ManyToManyField(Word)
class WordMeanings(models.Model):
word = models.ForeignKey(Word)
meaning = models.CharField(max_length = 500)
forms.py
class WordsForm(ModelForm):
class Meta:
model = Words
fields = ('word',)
class MeaningsForm(ModelForm):
class Meta:
model = WordMeanings
fields = ('meaning',)
views.py
def sentence_review(request):
word = Words.objects.get(id=10)
meaningset= inlineformset_factory(Word, WordMeanings, fields=('meaning',))
meaningset = meaningset(instance=word)
word_form = WordsForm(instance=word)
return render(request, 'sentence_review.html', {"wordform": word_form, "meaningset_form": meaningset} )