Django Admin 无法将具有多个外键的模型中的属性显示到另一个模型
Django Admin can't display attributes in a model with multiple Foreign Keys to another model
基本上我有两个模型,一个用于图标,另一个用于具有 3 个图标(业务规则)的类型。在我的 models.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)
一切正常,但我无法让它显示图标名称。这适用于具有同一模型的单个外键属性的其他 类,但是这里由于同一模型的三个外键属性,我得到一个错误:
<class 'app.admin.TypeAdmin'>: (admin.E108) The value of 'list_display[1]' refers to 'icon1__name', which is not a callable, an attribute of 'TypeAdmin', or an attribute or method on 'app.Type'.
导致此错误的原因是什么?我该如何解决? FK 允许为 null(或空白),因为某些类型允许没有图标(不是必需的)。
已解决:感谢 Iain 的回答,不应该调用属性并且只将其保留为 icon1
而不是 icon1__name
因为它调用了 __str__
方法returns 无论如何名字。
基本上我有两个模型,一个用于图标,另一个用于具有 3 个图标(业务规则)的类型。在我的 models.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)
一切正常,但我无法让它显示图标名称。这适用于具有同一模型的单个外键属性的其他 类,但是这里由于同一模型的三个外键属性,我得到一个错误:
<class 'app.admin.TypeAdmin'>: (admin.E108) The value of 'list_display[1]' refers to 'icon1__name', which is not a callable, an attribute of 'TypeAdmin', or an attribute or method on 'app.Type'.
导致此错误的原因是什么?我该如何解决? FK 允许为 null(或空白),因为某些类型允许没有图标(不是必需的)。
已解决:感谢 Iain 的回答,不应该调用属性并且只将其保留为 icon1
而不是 icon1__name
因为它调用了 __str__
方法returns 无论如何名字。