【问题标题】:Cannot get model objects to display attributes in the django admin pages无法获取模型对象以在 django 管理页面中显示属性
【发布时间】:2017-04-25 05:43:59
【问题描述】:

我的模型.py:

class Departement(models.Model):
    departNumber = models.PositiveSmallIntegerField(default=0, primary_key= True)
    departName = models.CharField(max_length=100)

    def __unicode__(self):
        return self.departNumber

我的 admin.py:

class DepartementAdmin(admin.ModelAdmin):
    list_display = ('departNumber', 'departName')

admin.site.register(Departement, DepartementAdmin)

问题是,我无法获得任何“部门”对象。我尝试过 .get()、.filter() 或 .all()。在这两种情况下,它都会返回并且不打印部门编号。

<Departement: Departement object>

我做错了什么??

编辑:更具体地说,在数据库中,我有一个包含部门名称和编号的表“部门”。例如,如果我输入:

Departement.objects.filter(departNumber=2)

它应该给我一个“Var”的departName,因为“Var”是具有2作为主键的部门。

【问题讨论】:

  • 我不明白你在问什么。你有一个Department对象。
  • 嗯,这一个Department对象...
  • 移动你的 def __unicode__(self):在类中返回 self.departNumber。这就是为什么它不是印刷部门编号。
  • 你用的是python 2还是python 3?
  • 我已经更新了我的答案,现在您已经为您的问题添加了更多信息。

标签: python django django-queryset


【解决方案1】:

__unicode__ 更改为 __str__ 方法并查看。它应该适用于 python 3。

class Departement(models.Model):
    departNumber = models.PositiveSmallIntegerField(default=0, primary_key= True)
    departName = models.CharField(max_length=100)

    def __str__(self):
        return self.departNumber

要使其与 python 2 兼容,您可以执行此处建议的操作: https://docs.djangoproject.com/en/1.10/ref/models/instances/

【讨论】:

    【解决方案2】:

    你说:

    Departement.objects.filter(departNumber=2) 应该给我一个离开名 即“Var”,因为“Var”是以 2 作为主键的部门。

    因此,您依赖 __unicode__ 方法返回部门名称(即使您的 __unicode__ 方法实现当前返回部门编号)。

    为什么不直接访问属性?

    dept = Departement.objects.filter(departNumber=2)
    dept.departName
    

    从长远来看,它使代码更易于维护。

    但要回答 为什么 它不起作用,我们需要知道您使用的是 python 2 还是 3。

    如果为 3,则将方法名称更改为 __str__,如下所述:Why __unicode__doesn't work but __str__ does?

    【讨论】:

    • 我正在使用 python 3。dept = Departement.objects.filter(departNumber=2) dept.departName 给出一个错误。 @托尼
    猜你喜欢
    • 1970-01-01
    • 2011-11-22
    • 2021-08-01
    • 2016-02-20
    • 1970-01-01
    • 1970-01-01
    • 2018-04-18
    • 2020-09-30
    • 2018-11-13
    相关资源
    最近更新 更多