Python AttributeError - 'Category' 对象没有属性 'product_set'
Posted
技术标签:
【中文标题】Python AttributeError - \'Category\' 对象没有属性 \'product_set\'【英文标题】:Python AttributeError - 'Category' object has no attribute 'product_set'Python AttributeError - 'Category' 对象没有属性 'product_set' 【发布时间】:2013-03-20 13:38:13 【问题描述】:昨天,我的电子商务目录的 show_category
视图功能齐全。例如,导航到 domain.com/category/necklaces 将调用 show_category
视图并显示我在项链类别中的所有产品。这是通过两个表、产品和类别以及它们关联的“通过”表来完成的。
我一直在使用 syncdb
,但我必须添加一个新的 ManyToManyField,所以 Django South 参与其中,我安装了它,重新创建了数据库,使用 django south 来管理我的迁移,设置并添加了所有内容我的类别和产品回到了 django admin,一切都很顺利。我在 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()
但问题是,自昨晚以来,这一切都没有改变。我检查了数据库,是的,产品存在,是的,“通过”表正确地将产品连接到这个类别。
任何想法我应该去哪里看?我假设错误是在数据库中的某个地方,因为我基本上没有触及当时工作的代码,但数据库看起来如此原始,很难说。任何和所有的帮助表示赞赏。在此期间,我会在自己周围闲逛。
【问题讨论】:
如果您在外键引用中使用了related_name
,_set
将不起作用。可以分享一下你的模型吗?
我愿意分享,但你解决了问题。果然,related_name 潜入了模型。我将不得不与另一位“从昨晚起就没有碰过它……我不认为……”的开发人员谈谈。谢谢 karthikr。您是否想将其添加为答案以便我接受,或者这不是您处理解决问题的 cmets 的方式?
【参考方案1】:
添加评论作为答案以供将来参考:
如果您在外键引用中使用了related_name
,则_set
将不再起作用,因为django 提供_set
作为默认相关名称,并且自定义相关名称优先
一些关于related_name
here用法的文档
【讨论】:
我投票赞成增加阅读 - 这有助于我理解我认为我完全理解但有一些误解的问题。以上是关于Python AttributeError - 'Category' 对象没有属性 'product_set'的主要内容,如果未能解决你的问题,请参考以下文章
Python:AttributeError:'str'对象没有属性'datetime'
Python类继承:AttributeError:'[SubClass]'对象没有属性'xxx'
Python 错误:AttributeError:“模块”对象没有属性“heappush”