我想写一个等同于这个SQL查询的Django查询:
SELECT * from user where income >= 5000 or income is NULL.
Run Code Online (Sandbox Code Playgroud)
如何构造Django queryset过滤器?
User.objects.filter(income__gte=5000, income=0)
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为它AND是过滤器.我想过OR滤器来获得各个查询集的联合.
我|在函数调用中看到一个"管道"字符():
res = c1.create(go, come, swim, "", startTime, endTime, "OK", ax|bx)
Run Code Online (Sandbox Code Playgroud)
管道的含义是什么ax|bx?
我正在尝试OR在Django filter()函数中使用运算符.现在我有
contactlist = Contact.objects.filter(last_name__icontains=request.POST['query'])
Run Code Online (Sandbox Code Playgroud)
但我也想用名字搜索.例如:
contactlist = Contact.objects.filter(last_name__icontains=request.POST['query'] OR first_name__icontains=request.POST['query'])
Run Code Online (Sandbox Code Playgroud)
有谁知道如何做到这一点?
有人知道为什么这query_set不会为我返回任何值吗?单独使用过滤器,它工作得很好,所以似乎.filter().filter()一起过滤“非此即彼”是错误的方法。
ticket_query = request.event.tickets.filter(status='on-sale').filter(status='paused').prefetch_related('ticket_tax')
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Django 的 ORM 来使用额外方法和过滤方法生成查询。像这样的东西:
Model.objects.filter(clauseA).extra(clauseB).all()
Run Code Online (Sandbox Code Playgroud)
这会生成一个查询,但问题是过滤子句中的所有内容都与额外子句中的所有内容进行 AND 运算,因此 sql 如下所示:
SELECT * FROM model WHERE clauseA AND clauseB.
Run Code Online (Sandbox Code Playgroud)
我的问题是,有没有办法更改 Django 中查询的默认组合运算符,以便生成的查询将是:
SELECT * FROM model WHERE clauseA OR clauseB.
Run Code Online (Sandbox Code Playgroud) 我想使用django ORM执行OR查询.我提到了这个答案,它符合我的需要.
我有一个动态生成的整数列表.这些整数表示特定表中的用户ID.该表还有一个日期字段.我想查询数据库中列表中给定日期的所有用户ID.
例如:从下表中,我想要2015-02-28日期的用户ID和3的记录
id | date
---------------
1 | 2015-02-23
1 | 2015-02-25
1 | 2015-02-28
2 | 2015-02-28
2 | 2015-03-01
3 | 2015-02-28
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚以下哪两项对我的用例来说是完美的:
Table.objects.filter(reduce(lambda x, y: (x | y) & Q(date=datetime.date(2015, 2, 28)), [Q(user_id=i) for i in ids])
Run Code Online (Sandbox Code Playgroud)
要么
Table.objects.filter(reduce(lambda x, y: (x | y), [Q(user_id=i) for i in ids]) & Q(date=datetime.date(2015, 2, 28))
Run Code Online (Sandbox Code Playgroud)
以上两者在此刻产生类似的输出.没有lambda,下面的查询符合我的需要:
Table.objects.filter(Q(user_id=3) & Q(date=datetime.date(2015, 2, 28))| Q(user_id=2) & Q(date=datetime.date(2015, 2, 28)))
Run Code Online (Sandbox Code Playgroud) 我想OR在过滤对象数据时在 Django 中使用带条件的过滤器。
我有一个类的对象,我有 3 或 4 个字段,在此基础上我想OR在 Django 中使用条件过滤数据。
例如。
Obj = Books.objects.filter(title=title or price=price or description=description or author=author)
Run Code Online (Sandbox Code Playgroud)
我认为这不是执行过滤的正确方法。
OR在我的 django 过滤器中使用条件的正确方法是什么