【发布时间】:2015-08-30 02:00:29
【问题描述】:
我不确定我是否理解 modelformset_factory 库的工作原理。我想向用户呈现动态数量的表单以向数据库添加新项目。
我的模型是这样的:
#models.py
class Question(models.Model):
user = models.ForeignKey(User)
text = models.CharField(max_length=100)
class Answer(models.Model):
question = models.ForeignKey(Question)
text = models.CharField(max_length=100)
因此用户可以定义问题以及对该问题的尽可能多的答案(选择)。
所以在我看来,我想得到他们想要添加多少个答案,并创建一个动态表单集,如下所示:
def q_answers(request, qid, howManyAnswersMore):
AnswerModelFormSet = modelformset_factory(Answer, fields=('question','text'), extra = howManyMore)
formset = AnswerModelFormSet()
问题是,我的表单集包含数据库中的所有答案(所以问题#1 的答案#1、q1 的 a2、q2 的 a1、q2 的 a2 等)
但是,我只想显示 URL 中带有 qid 参数的问题的答案。如何过滤仅与该问题相关的答案项目?
另外,我可以排除已经存在的项目,只让用户添加新问题吗?
感谢您的帮助!
【问题讨论】:
-
问题不在于工厂,而在于您如何实例化表单集,您没有显示。
-
@DanielRoseman 我不确定应该放哪一行。我添加了
formset = AnswerModelFormSet()行并将这个表单集传递给模板。
标签: django django-forms modelform formset