我在做一个ModelForm。我有一个性别字段,在那里我给了choices.In 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中使用commands.Instead从数据库中获取数据时,我得到了'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>)
如何获得“男性”和“女性”的原名?谢谢
发布于 2019-07-16 08:36:32
您应该将get_FIELD_display
作为函数调用,因此使用()。
a.get_gender_display()
https://stackoverflow.com/questions/57053055
复制