为什么我的“ def __str __(self)”功能在Django中不起作用

时间:2019-10-06 20:24:17

标签: python django orm

from django.db import models

# Create your models here.
class Article(models.Model):
    title = models.CharField(max_length=100)
    slug = models.SlugField()
    body = models.TextField()
    date = models.DateTimeField(auto_now_add=True)


***def __str__(self):
    return self.title***

当我在此行输入 Article.objects.all()时,它应该显示我在数据库中拥有的标题。但是,为什么只显示<Article: Article object>呢?尽管我正确地写了def __str__(self):

InteractiveConsole

3 个答案:

答案 0 :(得分:1)

缩进似乎是错误的。我忽略这里的那些星号,因为它们不应该在那里。确保您的函数位于具有正确缩进的Article类中。

from django.db import models

class Article(models.Model):
    title = models.CharField(max_length=100)
    slug = models.SlugField()
    body = models.TextField()
    date = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.title

这是控制台输出:

(InteractiveConsole)
>>> from about.models import Article
>>> Article.objects.all()
<QuerySet [<Article: This is article 1>, <Article: This is article 2>, <Article: This is article 3>]>

答案 1 :(得分:0)

我也有这个错误,但我可以解决。

方法是

  1. 输入文本编辑器并打开您的model.py文件
  2. 函数中以“ def”开头的行上的点
  3. 然后返回上一行代码结束
  4. 然后输入

类代码和功能代码之间的空格导致此错误类型。 如果您想知道,请再次输入“ python manage.py makemigrations”和“ python manage.py migration”。您将看到错误消息结尾为 ” def str (自己): ^ IndentationError:unindent与任何外部缩进级别都不匹配”

如果键入命令“ python manage.py runserver”,您将看到错误消息以“没有使用'admin'卸载应用程序标签”结尾。

显示不同的错误消息,但是,您可以按照我的步骤解决此错误。

答案 2 :(得分:-3)

您需要改为定义__repr__