2017-04-05 63 views
0

我在Django中的模型中编写了以下代码。当我尝试使用__str__()方法时,出现该方法不可调用的错误。有什么我失踪?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' 
+0

我使用django.blog_posts.all()调用__str__方法和获得“‘海峡’对象不是可调用的” –

回答

0

该错误不告诉你,你的__str__方法uncallable,它告诉你该字符串"{} 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')) 
+0

我得到相同的结果,当我使用这两种格式之一 –

+0

上面的代码不应该给出这个错误。要么在更改代码后没有重新启动服务器,要么在别的地方也有类似的错误。 – Alasdair