请帮助解决问题。
有一个表格包含有关用户的数据。该表有一个相关的字段'性别'。您希望显示带有下拉列表的表单以选择性别。
models.py:
class Gender(models.Model):
gender = models.CharField(
max_length=10,
blank=False,
)
class UserProfile(User):
nickname = models.CharField(
'Отображаемое имя',
max_length=30,
blank=False,
)
gender = models.ForeignKey(
Gender,
#default=1,
null=True,
)
views.py:
def personal_data_page(request):
entry_user_profile = UserProfile.objects.get(user_ptr_id__exact=request.user.id)
form = PersonalDataForm(instance=entry_user_profile)
t = loader.get_template('personal_data_page.html')
c = RequestContext(request, {
'form': form,
})
return HttpResponse(t.render(c))
forms.py:
class PersonalDataForm(forms.ModelForm):
class Meta:
model = UserProfile
fields = (
'nickname',
'gender',
)
personal_data_page.html:
<div class="cell">
<label class="label">{{ form.gender.label }}</label>
{{ form.gender }}
{{ form.gender.errors }}
</div>
问题是线路输出
1
。我需要输出类似于:
<select>
<option value="1">Male</option>
<option value="2">Female</option>
</select>
答案 0 :(得分:1)
为什么要将UserProfile
模型与ForeignKey
制作一个性别表?只需在UserProfile中包含性别即可。
你在寻找什么称为choice_field
。
以下是一个示例:ChoiceField in Django model
以下是文档:https://docs.djangoproject.com/en/dev/ref/models/fields/#field-choices。
此外,这里有一些关于使用带有选项的小部件的文档:https://docs.djangoproject.com/en/dev/topics/forms/modelforms/
修改强>
如果你真的想保留性别表:
class PersonalDataForm(forms.ModelForm):
class Meta:
model = UserProfile
fields = (
'nickname',
'gender',
)
widgets = {'gender': forms.ModelChoiceField(queryset =
Gender.objects.all())}
,假设您已为__unicode__
Gender
在此处查看更多信息: