1

昨天我show_category的电子商务目录视图功能齐全。例如,导航到 domain.com/category/necklaces 将调用show_category视图并显示我在项链类别中的所有产品。这是通过两个表、产品和类别以及它们关联的“通过”表来完成的。

我一直在使用 just 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()

但问题是,从昨晚开始,这一切都没有改变。我检查了数据库,是的,产品存在,是的,“通过”表正确地将该产品连接到这个类别。

我应该在哪里看的任何想法?我假设错误出在数据库的某个地方,因为我基本上没有接触当时正在工作的代码,但是数据库看起来如此原始,很难说。任何和所有的帮助表示赞赏。在此期间,我会在自己周围闲逛。

4

1 回答 1

3

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

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

关于related_name 此处使用的一些文档

于 2013-03-29T20:09:32.123 回答