如何在Django queryset中执行小于或等于过滤器?


175

我试图通过每个称为“个人资料”的用户个人资料中的自定义字段来过滤用户。此字段称为级别,是0到3之间的整数。

如果我使用等于进行过滤,则会得到具有预期级别的用户列表:

user_list = User.objects.filter(userprofile__level = 0)

当我尝试使用少于以下内容进行过滤时:

user_list = User.objects.filter(userprofile__level < 3)

我得到了错误:

未定义全局名称“ userprofile__level”

有没有一种方法可以通过<或>进行过滤,或者我是否吠叫了错误的树。


2
@BéresBotond尽管文档看起来棒极了-在结构和布局是如此之差,如果没有直接的联系,他们都是中看不中用
RunLoop

@BéresBotond不幸的是,链接现在已经死了:(
dKen '16

Answers:


337

小于或等于:

User.objects.filter(userprofile__level__lte=0)

大于或等于:

User.objects.filter(userprofile__level__gte=0)

同样,lt小于和gt大于。您可以在文档中找到它们。


2
哇,那太快了:)。小于或等于时效果很好,但是小于等于呢?(userprofile__level__lt = 3)似乎不起作用
Finglish 2012年

1
确实如此;但无论如何,您也可以排除(__gte)代替filter(__ lt)。
Lakshman Prasad'4

2
并且不要忘记有两个__下划线
andilabs 2014年

我收到此错误-> {FieldError} AutoField不支持的查找“级别”或不允许在字段上加入。
Aravind R Pillai
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.