显示来自数据库Django的复选框值

时间:2019-07-16 08:26:23

标签: python django python-3.x django-models django-forms

我正在制作一个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>)

如何获得原始名称“男”和“女”?谢谢

1 个答案:

答案 0 :(得分:2)

您应该将get_FIELD_display作为函数调用,因此请使用()。

a.get_gender_display()