【问题标题】:__str__() method in django not callableDjango 中的 __str__() 方法不可调用
【发布时间】:2017-04-05 16:41:44
【问题描述】:

我在 Django 的模型中编写了以下代码。当我尝试使用 __str__() 方法时,我收到一个错误,指出该方法不可调用。有什么我遗漏的吗?

from django.db import models
from organizer.models import Startup, Tag

# Create your models here.
class Post(models.Model):
    title = models.CharField(max_length=63)
    slug = models.SlugField(
    max_length=63,
    help_text='A label for URL config',
    unique_for_month='pub_date')
    text = models.TextField()
    pub_date = models.DateField('date published',
    auto_now_add=True)
    tags = models.ManyToManyField(
    Tag, related_name='blog_posts')
    startups = models.ManyToManyField(
    Startup, related_name='blog_posts')

    def __str__(self):
        return "{} on {}" (self.title, self.pub_date.strftime('%Y-%m_%d'))

    class Meta:
        verbose_name = 'blog post'
        ordering = ['-pub_date', 'title']
        get_latest_by = 'pub_date'

【问题讨论】:

  • 我正在使用 django.blog_posts.all() 调用 str 方法,得到“'str' object is not callable”

标签: python django model


【解决方案1】:

错误不是告诉您__str__ 方法不可调用,而是告诉您字符串"{} on {}" 不可调用。

Python 正在尝试调用该字符串,因为您对字符串格式的尝试不正确。您可以使用以下任一方法:

"{} on {}".format(self.title, self.pub_date.strftime('%Y-%m_%d'))


"%s on %s" % (self.title, self.pub_date.strftime('%Y-%m_%d'))

【讨论】:

  • 当我使用这两种格式时,我得到了相同的结果
  • 上面的行不应该给出那个错误。要么你改代码后没有重启服务器,要么你在其他地方有类似的错误。
猜你喜欢
  • 2019-03-30
  • 2017-07-28
  • 1970-01-01
  • 2018-02-10
  • 2015-04-18
  • 2018-05-27
  • 1970-01-01
  • 2021-11-04
  • 2013-12-13
相关资源
最近更新 更多