Tot*_*oum 5 python django admin foreign-keys
我遇到了与他完全相同的问题:Django ModelAdmin中的"list_display"可以显示ForeignKey字段的属性吗?
我想在答案管理员身上看到问题. 我做了与答案相同的事情,但得到了这个错误:
'Answer' object has no attribute 'question'
Run Code Online (Sandbox Code Playgroud)
这是我的代码(问题可以有很多可能的答案):
class Question(models.Model):
question = models.CharField(max_length=255)
class Answer(models.Model):
question = models.ForeignKey('Question')
answer = models.CharField(max_length=255)
Run Code Online (Sandbox Code Playgroud)
我的管理员:
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)
Run Code Online (Sandbox Code Playgroud)
不知道为什么,这是行不通的,但另一种解决办法是重写__unicode__()方法Question(或者__str__(),如果你正在使用Python3),这是当你包括所显示ForeignKey的字段list_display:
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', ]
Run Code Online (Sandbox Code Playgroud)
文档:https://docs.djangoproject.com/en/1.7/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_display