formset_factory 具有不同初始数据的表单

Posted

技术标签:

【中文标题】formset_factory 具有不同初始数据的表单【英文标题】:formset_factory with forms with different initial data 【发布时间】:2014-04-11 01:16:14 【问题描述】:

我正在编写一个视图,它使用 POST 数据来显示具有不同预填充 FK 的多个表单

我在 forms.py 中有一个 ModelForm

class SurveyForm(forms.ModelForm):
    class Meta:
        model = Survey

谁的模特长这样……

class Survey(models.Model):
    student = models.ForeignKey(Student)
    surveyset = models.ForeignKey(SurveySet)

    cei_0  = models.BooleanField()
    cei_1  = models.BooleanField()

到目前为止,我的观点看起来有点像这样

# ... after building a list from POST we essentially have:
list_of_studentids = [1,3,2,6,7,45]

students = []
for i in list_of_student_ids:
    students.append(Student.objects.filter(id=i))

SurveyFormSet = formset_factory(SurveyForm, extra=6)

formset = SurveyFormSet(initial=[
    'surveyset': SurveySet.create(),
    'student': ?????,
])

如何返回一堆具有不同学生 FK 和相同调查集 FK 的表格?

【问题讨论】:

【参考方案1】:

您需要将instance 属性传递给表单:

prefilled_survey = Survey(student=student_instance, surveyset=surveyset_instance)
form = SurveyForm(request.POST or None, instance=prefilled_survey)

【讨论】:

我需要具有不同实例的多个表单。

以上是关于formset_factory 具有不同初始数据的表单的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django 中根据需要为 formset_factory 设置每个字段(如何验证表单集中的空白表单)

如何使用具有不同对象的“重复:计数:”初始化数组? [复制]

在初始化期间创建具有不同时区的新 JavaScript 日期对象 [重复]

具有不同父字段初始化的最佳方法是什么?

iPhone - 两个不同的自定义单元格,具有不同的设计,在同一个 UITableViewController - 单元格保持初始大小

在 C++ 中使用 memset 初始化具有不同值的结构数组元素