为什么django模型实例命名对象本身

时间:2014-08-05 07:17:05

标签: django django-admin

我不知道这是要问的正确标题。我没有足够的声誉来发布图片。

models.py

class Artist(models.Model):
    artist_name = models.CharField(max_length=100)

class Album(models.Model):
    album_name = models.CharField(max_length=100)
    artist = models.ForeignKey(Artist)

我已将模型注册到管理员

在管理页面中我添加了艺术家名称没有问题。然后在下拉专辑部分显示像专辑对象而不是我给出的艺术家名称。这是为了什么?

2 个答案:

答案 0 :(得分:2)

Django不知道你想使用artist_name作为Artist对象的字符串表示。您需要在Artist模型中添加__unicode__(或Python 3上的__str__)方法:

def __unicode__(self):
    return self.artist_name

答案 1 :(得分:1)

如果你想与python 2和3同步,那就更好了:

在模特的顶部:

from __future__ import unicode_literals

然后在你的课前:

@python_2_unicode_compatible
class YourClass(models.Model):

然后:

    def __str__(self):
        return '%s' % self.title