Django - 如何显示来自 foreignKey 对象的属性(名称)?

Django - How to display a attribut (name) from forgeinKey object?

我有一个艺术家,他有很多画,所以是多对一的关系。所以我得到了

class Artist(models.Model):
    name   = models.CharField(max_length=120)
    age    = models.IntField()

class Paintings(models.Model):
    painting         = models.ImageField()
    painting_name    = models.CharField(max_length=120, default='', null=True)
    artist = models.ForeignKey(
       'Artist',
       related_name='paintings',
       on_delete=models.CASCADE,
       verbose_name= 'Künstler'
    )

现在,如果我要创建一个依赖艺术家的新绘画,它不会显示艺术家的确切姓名,只会显示艺术家对象 [id]

在我的 admin.py 中,我尝试定义

artist = Artist.name 
list_display = ('image_tag', artist, 'painting_name')

但这是不允许的。那么如何用艺术家的实际 name 替换 Artist 对象 (id)

在您的 Artist 模型中,您必须定义一个 __str__ 函数:

def __str__(self):
  return self.name # Or whatever way you want your Artist to show

这告诉 Django 如何打印该对象。

来自Django Documentation:

__str__()

每当您对对象调用 str() 时,都会调用 __str__() 方法。 Django 在许多地方使用 str(obj) 。最值得注意的是,在 Django 管理站点中显示一个对象,并在显示对象时作为插入到模板中的值。因此,您应该始终 return 来自 __str__() 方法的模型的良好的、人类可读的表示。