我的 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
I used both unicode & str interchangeably, same result.
这是按菜单/操作分类的管理面板的屏幕截图。
1st screen
Author List
Single Author
最佳答案
您的缩进不正确。您需要缩进代码以使其成为模型的方法。应该是:
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
装饰器装饰您的类。更改代码后,请确保重新启动服务器以使代码更改生效。
关于python - Django Admin 显示对象 - 不使用 __unicode__ 或 __str__,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39266629/