django中__str __()方法不可调用

时间:2017-04-05 16:41:44

标签: python django model

我在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'

1 个答案:

答案 0 :(得分:0)

该错误并未告诉您__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'))