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
如何打印该对象。
__str__()
每当您对对象调用 str()
时,都会调用 __str__()
方法。 Django 在许多地方使用 str(obj)
。最值得注意的是,在 Django 管理站点中显示一个对象,并在显示对象时作为插入到模板中的值。因此,您应该始终 return 来自 __str__()
方法的模型的良好的、人类可读的表示。
我有一个艺术家,他有很多画,所以是多对一的关系。所以我得到了
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
如何打印该对象。
__str__()
每当您对对象调用 str()
时,都会调用 __str__()
方法。 Django 在许多地方使用 str(obj)
。最值得注意的是,在 Django 管理站点中显示一个对象,并在显示对象时作为插入到模板中的值。因此,您应该始终 return 来自 __str__()
方法的模型的良好的、人类可读的表示。