为什么django查询集不能为我工作?

时间:2012-05-17 19:03:24

标签: python django

根据this documentation

,我应该可以在我的Django对象变量上使用查询集'_contains'来过滤我的结果

但是当我实现这段代码时:

cookbooks = Books.objects.filter (category_contains = 'cooking')

我收到以下错误:

Cannot resolve keyword 'category_contains' into field. Choices are: category, adder, date etc.

为什么会这样?我还看到了this StackOverflow question,有人解释说只使用变量category暗示category_exact。但如果我写category_exact,我会收到类似的错误。

2 个答案:

答案 0 :(得分:4)

您需要使用双下划线__而不是一个下划线_

答案 1 :(得分:2)

字段查找以两个下划线(__)为前缀,而不是一个(_)。当您不熟悉语法时,很难区分它们。

仔细检查一般field lookups的文档,更具体地说,查看contains文档。以下是包含文档的示例,其中的注释显示了一个或两个下划线:

Entry.objects.get(headline__contains='Lennon')
#                         __ <-- 2 _'s
#                     not _  <-- 1 _