私は、人々がフォームの変数を作成し、他のユーザーがそのフォームを記入できるプロジェクトを持っています。これらのフォームを作成するときには、値、整数、または文字列のリストから3つの異なるタイプの回答を選択できます。基本的には、ユーザーがこのフォーム用に作成したすべての変数のformsetを作成しますが、リストの場合はCharFieldからChoiceFieldに入力のタイプを変更したいと考えています。Djangoビューのフィールドタイプを変更する
だからこれは私のビューです、
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
最後の印刷は、フィールドが実際にそれがある、変更された場合だけで見ることだった。
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)
そして、私のフォーム setListを呼び出した後に私のビューで同じ印刷を行うと、私のフィールドはまだ変わっていません
フォームを作成した後、適切なタイプを選択できましたか?