我的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 可互换,结果相同。
以下是菜单/操作管理面板的屏幕截图。
第一个屏幕
作者列表
单一作者
答案 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
装饰器装饰您的类。更改代码后,请确保重新启动服务器以使代码更改生效。