我在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 :(得分: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'))