【问题标题】:Display checkbox value from Database Django显示来自数据库 Django 的复选框值
【发布时间】: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


【解决方案1】:

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

a.get_gender_display()

【讨论】:

  • 谢谢它成功了。你能解释一下为什么我们必须把它称为函数吗?
  • 基本上,所有具有choices 的字段都有此方法可用,该方法返回选择的值。您可以查看更多here
  • 如何为管理站点执行相同的功能?
  • 看看here
猜你喜欢
  • 2016-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-05
  • 2016-09-24
相关资源
最近更新 更多