Django Admin显示对象 - 不使用__unicode__或__str__

时间:2016-09-01 08:38:32

标签: python django postgresql

我的Django管理员面板显示的是object而不是self.name的对象。

我在这里遇到了几个类似的问题但似乎无法解决这个问题。 __unicode____str__对书籍和作者都有相同的结果。我改变了这些界限,并在每次改变中添加了新的作者/书籍,但没有改变。

MODELS.PY

from django.db import models
from django.contrib.auth.models import User


# Create your models here.

class Author(models.Model):
    name = models.CharField(max_length=100)


def __str__(self):
    return self.name


class Book(models.Model):
    auto_increment_id = models.AutoField(primary_key=True)
    name = models.CharField('Book name', max_length=100)
    author = models.ForeignKey(Author, blank=False, null=False)
    contents = models.TextField('Contents', blank=False, null=False)


def __unicode__(self):
    return self.name
  

我同时使用 unicode & str 可互换,结果相同。

以下是菜单/操作管理面板的屏幕截图。

  

第一个屏幕

1st screen

  

作者列表

Author List

  

单一作者

Single Author

1 个答案:

答案 0 :(得分:4)

您的缩进不正确。您需要缩进代码以使其成为模型的方法。它应该是:

class Author(models.Model):
    name = models.CharField(max_length=100)

    def __str__(self):
        return self.name

如果您使用的是Python 3,请使用__str__。如果您使用的是Python 2,请使用__unicode__,或使用python_2_unicode_compatible装饰器装饰您的类。更改代码后,请确保重新启动服务器以使代码更改生效。