如何在Django ModelAdmin中“list_display”字段显示ForeignKey字段的属性?

2024-04-24 15:18:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有和他完全一样的问题: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)

Tags: answermodelmodelsdisplaylengthmaxlistclass
1条回答
网友
1楼 · 发布于 2024-04-24 15:18:52

不知道为什么这不起作用,但另一种解决方案是重写Question(或者如果使用Python3,则重写__str__())中的__unicode__()方法,这是在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

相关问题 更多 >