3

我最近在我的模型“News”中添加了一个新方法:

def slug(self):
    return slugify(self.title)

但是我似乎无法从任何地方调用它。想象一下,我有一个名为 n 的 News 对象。尝试打电话时

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())
4

2 回答 2

0

我有一些类似的错误。

我认为问题在于您的模型与数据库中的实际模式之间存在不一致。

运行manage.py sql myapp并验证内容是否与 sql> show schema (etc.) 中的内容匹配

如果它们不匹配,则必须使用 SQL 客户端并删除旧表,以便重新运行manage.py syncdb以使它们再次匹配。

一旦模式存在,您的方法应该可以工作。

于 2013-07-18T02:26:21.900 回答
0

有,没有错误。请检查您的班级

  from fbki.models import News

看起来您在项目中有两个副本,并修改了其他类。您通过将类 News 重命名为 News1 来检查。你会犯同样的错误 - 我是对的。

于 2012-04-12T07:46:36.950 回答