【问题标题】:how to “list_display” in a Django ModelAdmin display attributes of ForeignKey fields?如何在 Django ModelAdmin 中“list_display”显示 ForeignKey 字段的属性?
【发布时间】:2015-03-12 22:08:36
【问题描述】:

我和他有同样的问题:Can "list_display" in a Django ModelAdmin display attributes of ForeignKey fields?

我想在答案管理员上查看问题。 我做了与答案相同的事情,但得到了这个错误:

'Answer' object has no attribute 'question'

这是我的代码(问题可以有很多可能的答案):

class Question(models.Model):
    question = models.CharField(max_length=255)


class Answer(models.Model):
    question = models.ForeignKey('Question')
    answer = models.CharField(max_length=255)

我的管理员:

class AnswerAdmin(admin.ModelAdmin):
    model = Answer
    list_display = ['answer', 'get_question', ]

    def get_question(self, obj):
        return obj.question.question


admin.site.register(Answer, AnswerAdmin)

【问题讨论】:

  • 您是否尝试过使用tuple 而不是list 来代替list_display
  • 是的,同样的错误
  • 那是你的实际代码吗?我觉得没问题,所以我不确定你为什么会收到这个错误。

标签: python django foreign-keys admin


【解决方案1】:

不知道为什么这不起作用,但另一种解决方案是覆盖 Question 中的 __unicode__() 方法(或 __str__(),如果您使用的是 Python3),这是您包含时显示的内容list_display 中的 ForeignKey 字段:

class Question(models.Model):
    question = models.CharField(max_length=255)

    def __unicode__(self):
        return self.question


class Answer(models.Model):
    question = models.ForeignKey('Question')
    answer = models.CharField(max_length=255)

class AnswerAdmin(admin.ModelAdmin):
    model = Answer
    list_display = ['answer', 'question', ]

文档:https://docs.djangoproject.com/en/1.7/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_display

【讨论】:

    猜你喜欢
    • 2010-09-14
    • 2018-12-03
    • 2013-04-13
    • 1970-01-01
    • 2020-01-03
    • 2020-12-31
    • 2021-04-28
    • 2020-09-12
    • 2020-06-11
    相关资源
    最近更新 更多