我最近为我的模型“新闻”添加了一种新方法:
def slug(self):
return slugify(self.title)
但是我似乎无法从任何地方打电话。想象一下,我有一个名为n的新闻对象。试图打电话时
n.slug()
我总是收到如下错误:
AttributeError: 'News' object has no attribute 'slug'
我是Django和Python的初学者,我确信这只是我身上的一个愚蠢的错误。顺便说一下,我尝试重新启动开发服务器并在添加方法后同步数据库,两者都不会改变。请注意,我之前使用过这样的模型方法没有问题:S
修改
以下是模型:
from django.template.defaultfilters import slugify
class News(models.Model):
title = models.CharField(max_length=100)
[...]
def slug(self):
return slugify(self.title)
以下是我如何调用该方法的示例代码。我首先尝试在模板中调用它,但它不起作用。然后我改变了我的视图,所以它只返回了slug,但错误仍然存在。我在shell中尝试它时也一样。
from fbki.models import News
def news_detail(request, slug, news_id):
news = News.objects.get(id = news_id)
return HttpResponse(news.slug())
答案 0 :(得分:0)
有,没有错误。请查看您的课程
from fbki.models import News
看起来你在项目中有两个副本,并修改其他类。您可以通过将您的班级重命名为News1进行检查。你会同样的错误 - 我是对的。
答案 1 :(得分:0)
我遇到了类似的错误。
我认为问题是您的模型与数据库中的实际架构之间存在不一致。
运行manage.py sql myapp
并验证内容是否与sql>中的内容相匹配; show schema(等)
如果它们不匹配,则必须使用SQL客户端并删除旧表,以便重新运行manage.py syncdb
以使它们再次匹配。
一旦存在架构,您的方法就应该有效。