Django表单不接受自定义字典标签 --- AttributeError:unicode对象没有get属性
我正在尝试在Django中编辑表单标签,使用的类大致是这样的:
from django import forms
class Form(forms.Form):
e = {}
gender = forms.ChoiceField(choices = ())
#_remaining variables_
def __init__(self, lang):
t = Translation.objects.get(template_file = 'VirasatForm')
startcount = t.id +1
endcount = t.page_entries.count() + t.id + 1
for i in range(startcount, endcount):
w = t.page_entries.get(id = i).template_file
if lang == 'en':
r = t.page_entries.get(id = i).enTranslate
elif lang == 'lsd':
r = t.page_entries.get(id = i).lsdTranslate
elif lang == 'ar':
r = t.page_entries.get(id = i).arTranslate
self.e[w] = r
super(Form,self).__init__(self, lang)
self.fields['gender'].choices = (('m',self.e['Male']),('f',self.e['Female']))
self.fields['gender'].label = self.e['gender'])
但我遇到的问题是,系统给我提示了一个错误:AttributeError: 'unicode'对象没有'get'这个属性。
提前谢谢大家的帮助!
1 个回答
1
你可以像这样动态创建一个表单:
class Form(forms.Form):
def __init__(self, gender_choices, *args, **kwargs):
super(Form, self).__init__(*args, **kwargs)
self.fields['gender'] = forms.ChoiceField(choices=gender_choices)
使用示例:
>>> choices = (('m', 'Male'), ('f', 'Female'))
>>> f = Form(choices)
>>> print f
<tr><th><label for="id_gender">Gender:</label></th><td><select name="gender" id="id_gender">
<option value="m">Male</option>
<option value="f">Female</option>
</select></td></tr>