Django:调用自己的模型方法时的AttributeError

时间:2012-04-04 13:16:28

标签: python django django-models

我最近为我的模型“新闻”添加了一种新方法:

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

2 个答案:

答案 0 :(得分:0)

有,没有错误。请查看您的课程

  from fbki.models import News

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

答案 1 :(得分:0)

我遇到了类似的错误。

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

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

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

一旦存在架构,您的方法就应该有效。