Модель:
class SocialGroup(models.Model):
INDIVIDUAL = 'individual'
INSTITUTE = 'institute'
options = ((INDIVIDUAL, 'Individual'),
(INSTITUTE, 'Institute'))
level = models.CharField(choices=options, max_length=100)
def __unicode__(self):
return self.name
class Meta:
ordering = ['name']
Форма:
class GroupLevelForm(forms.Form):
level = forms.ChoiceField(choices=SocialGroup.options)
def clean_level(self):
return self.cleaned_data['level']
Когда я звоню в свою форму, я делаю это как level = GroupLevelForm({level: 'Individual'}). Я хочу вернуть individual в очищенные данные.
choice field.options = (('internal, 'External'),), когда я делаю это как level = GroupLevelForm({level: 'External'}), как я могу получить internal в cleaned_data.Заранее спасибо!





Ошибка возникает из-за того, что вы никогда не вызываете is_valid() в своей форме. cleaned_data существует только после того, как был вызван.
Вам нужно что-то вроде [входящий псевдокод]:
def clean_fields():
if form.is_valid():
self.cleaned_data['level']
Обратитесь к документации для объяснения django: построение формы
У меня такое чувство, что если вы измените GroupLevelForm на класс ModelForm, он позаботится об этом за вас. В противном случае вам, вероятно, придется взять то, что вы получаете из cleaned_data, и сопоставить его с правильным кортежем в options.
Если я правильно понимаю вопрос, думаю, вы справитесь
def clean_level(self):
selected_display_name = self.cleaned_data['level']
for val, disp_name in SocialGroup.options:
if disp_name == selected_display_name:
return val
return selected_display_name # or whatever default you want
Потрясающие! Спасибо!
@DevashishPatel, если это решило вашу проблему, отметьте этот ответ как принятый, чтобы вопрос был отмечен как решенный в списке вопросов. Спасибо
Прежде всего, прошу прощения за недостоверную информацию. В основном я спрашиваю, если для
choice fieldя передаюexternal nameв своей форме, как я могу вернутьinternal nameизchoice field. Например:options = (('internal, 'External'), когда я делаю это какlevel = GroupLevelForm({level: 'External'}), как я могу получитьinternalвcleaned_data.