Python AttributeError - 'Category'对象没有属性'product_set'

时间:2013-03-29 19:35:33

标签: python mysql django django-south attributeerror

我的电子商务目录的show_category视图昨天完全正常运行。例如,导航到domain.com/category/necklaces会调用show_category视图并显示项链类别中的所有产品。这是通过两个表,产品和类别及其相关的“直通”表来实现的。

我一直在使用syncdb,但我不得不添加一个新的ManyToManyField,所以Django South参与其中,我安装了它,重新创建了数据库,使用django south来管理我的迁移,设置了所有内容并在django管理员中添加了我的类别和产品,一切顺利。我在SQL Workbench中检查了数据库本身,它看起来很棒 - 这是我昨晚所做的完美再现,但现在使用Django South。

然后我导航到domain.com/category/necklaces,我希望看到我的类别页面列出我的一个测试项链产品。相反,我得到了这个:

AttributeError at /category/necklaces/
'Category' object has no attribute 'product_set'

错误发生在我的catalog.views.py:

def show_category(request, 
                  category_slug, 
                  template_name="catalog/category.html"):
    c = get_object_or_404(Category, 
                          slug=category_slug)
    products = c.product_set.all()

但问题是,自从昨晚以来,这并没有改变。我检查了数据库,确认产品是否存在,是,“通过”表正确地将该产品连接到此类别。

我应该看看哪些想​​法?我假设错误是在数据库中的某个地方,因为我基本上没有触及当时工作的代码,但数据库看起来如此原始,很难说。任何和所有的帮助表示赞赏。在此期间我会四处寻找自己。

1 个答案:

答案 0 :(得分:2)

添加评论作为未来参考的答案:

如果您在外键引用中使用了related_name_set将不再有效,因为django提供_set作为默认相关名称,并且自定义相关名称优先

有关related_name here

使用情况的一些文档