Формы Django не принимают пользовательскую метку, основанную на dict --- Unicode-объект AttributeError не имеет атрибута get - PullRequest
0 голосов
/ 22 мая 2011

Я пытаюсь отредактировать метку формы в 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 голос
/ 22 мая 2011

Вы можете создать форму динамически, как это:

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...