【发布时间】:2019-11-24 22:36:28
【问题描述】:
我正在制作一个 ModelForm。我有一个 Gender 字段,我在其中给出了选择。在 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 命令:
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>)
我怎样才能得到原来的名字“男”和“女”?谢谢
【问题讨论】:
-
这里没有展示相关代码。 在哪里你打电话给
get_gender_display? -
在 django shell 中使用命令,等待我更新问题@DanielRoseman
-
a.get_gender_display()怎么样
标签: python django python-3.x django-models django-forms