基本上我有两个模型,一个用于图标,另一个用于有3个图标的类型(业务规则)。在mymodels.py
class Icon(models.Model):
name = models.CharField(max_length=60)
image_URL = models.CharField(max_length=255)
modified_date = models.DateTimeField(auto_now=True)
creation_date = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.name
class Type(models.Model):
name = models.CharField(max_length=60)
modified_date = models.DateTimeField(auto_now=True)
creation_date = models.DateTimeField(auto_now_add=True)
icon1 = models.ForeignKey(Icon, null=True, blank=True, on_delete=models.SET_NULL, related_name="icon1")
icon2 = models.ForeignKey(Icon, null=True, blank=True, on_delete=models.SET_NULL, related_name="icon2")
icon3 = models.ForeignKey(Icon, null=True, blank=True, on_delete=models.SET_NULL, related_name="icon3")
def __str__(self):
return self.name
admin.py
class TypeAdmin(admin.ModelAdmin):
list_display = (
'name',
'icon1__name',
'modified_date',
'creation_date',
'id'
)
...
admin.site.register(models.Type, TypeAdmin)
一切正常,但我不能让它显示图标的名称。这适用于具有同一模型的单个外键属性的其他类,但是在这里,由于同一模型有三个外键属性,因此我得到一个错误:
; (admin.E108) 'list_display[1]'的值指向'icon1__name',它不是一个可调用对象,不是'TypeAdmin'的属性,也不是'app.Type'的属性或方法。
是什么导致这个错误?我该怎么修呢?FK允许为null(或空白),因为某些类型允许没有图标(不是必需的)。
解决:由于Iain的回答,不应该调用attribute,只将其保留为icon1
而不是icon1__name
,因为它调用__str__
方法,无论如何都会返回名称