【发布时间】:2021-11-26 02:35:44
【问题描述】:
基本上我有两种模型,一种用于图标,另一种用于具有 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)
一切正常,但我无法让它显示图标的名称。这适用于具有同一模型的单个外键属性的其他类,但是由于同一模型有三个外键属性,因此出现错误:
: (admin.E108) 'list_display[1]' 的值是指'icon1__name',它不是可调用的,不是'TypeAdmin'的属性,也不是属性或“app.Type”上的方法。
是什么导致了这个错误?我该如何解决? FK 允许为 null(或空白),因为某些类型允许没有图标(不是必需的)。
【问题讨论】:
-
使用
'icon1'而不使用__name?Icon的__str__方法无论如何都会返回名称 -
好的,非常感谢,这已修复并允许我添加所有 3 个图标。我不知道离开它会调用
__str__方法。谢谢!
标签: django django-models django-rest-framework django-admin django-admin-tools