【发布时间】:2017-11-20 09:12:05
【问题描述】:
我有一个项目,人们可以在其中为表单创建变量,然后其他用户将填写该表单。当他们创建上述表单时,他们可以选择 3 种不同类型的答案:值列表、整数或字符串。基本上,我创建了用户为此表单创建的所有变量的表单集,但如果它是一个列表,我想将输入的类型从 CharField 更改为 ChoiceField。
这是我的观点:
def insererDonnee(request, modele, contexte=-1):
variables = Variable.objects.filter(modele=modele)
varIter = variables.iterator()
DonneeFormSet = formset_factory(InsertDonneeForm, extra=variables.count())
submitAdress = "insererDonnee"
if request.POST:
formset = DonneeFormSet(request.POST)
else:
formset = DonneeFormSet()
for formx in formset:
formx.variable = varIter.next()
formx.nomVar = formx.variable.nom
formx.fields['valeur'].label = formx.nomVar
# Here I call setList to change the type
if formx.variable.type_variable in ["SOLIST", "LIST"]:
formx.setList(formx.variable)
还有我的表格:
class InsertDonneeForm(forms.Form):
variable = Variable()
nomVar = 'Variable'
valeur = forms.CharField(label=nomVar, max_length=100)
def setList(self, variable):
choices = ListItem.objects.filter(variable=variable, modele=variable.modele)
valeur = forms.ModelChoiceField(queryset=choices)# or None)
print valeur
最后一次打印只是为了查看字段是否确实发生了变化,确实如此,但是如果我在调用 setList 后在视图中执行相同的打印,我的字段仍然是
在创建表单后我是否可以选择合适的类型?
【问题讨论】:
标签: python django forms django-views