我正在制作一个ModelForm。我有一个“性别”字段,可以在其中进行选择。在forms.py文件中,我已使用小部件将这些选择转换为复选框。
模型.py
class UserModel(models.Model):
#username=models.ForeignKey(
# on_delete=models.CASCADE,
# related_name='custom_user')
name=models.CharField(
max_length=50,
verbose_name='Full Name',
)
gender=models.CharField(
choices=(
('M','Male'),
('F','Female'),
),
max_length=1,
verbose_name='Gender',
default='M'
)
forms.py
class UserForm(forms.ModelForm):
class Meta:
model=UserModel
exclude=()
widgets = {
'DOB': forms.SelectDateWidget(),
'gender':forms.RadioSelect(),
#'hobbies':forms.CheckboxSelectMultiple()
}
一切正常,数据存储在数据库中,但是当我使用命令在django shell中从数据库中获取数据时,没有得到选择名称,而是得到了“ M”或“ F”。我知道对于选择字段,我们可以使用object_of_modelclass.get_gender_display
来获取选择名称,并且它返回选择的全名。但是由于我已经将选择转换为forms.py中的复选框字段,现在当我使用object_of_modelclass.get_gender_display
从数据库中获取数据时,它将返回
Django shell命令im使用:
from .models import UserModel
a=Usermodel.objects.get(pk=1)
a.get_gender_display
它返回
functools.partial(<bound method Model._get_FIELD_display of <UserModel: hoo>>, field=<django.db.models.fields.CharField: gender>)
如何获得原始名称“男”和“女”?谢谢
答案 0 :(得分:2)
您应该将get_FIELD_display
作为函数调用,因此请使用()。
a.get_gender_display()