我该如何在查询中过滤掉ID属于列表中任何对象实例的结果?
假设我有:
object_id_list = [1, 5, 345]
MyObject.objects.filter(Q(time__gte=datetime.now()) & Q( ... what to put here? ... ))
类似于"SELECT * FROM ... WHERE id NOT IN (...)"
的语句
MyObject.objects.filter(time__gte=datetime.now()).exclude(id__in=object_id_list)
你也可以使用 Q
对象来实现这一点:
from django.db.models import Q
MyObject.objects.filter(time__gte=datetime.now()).filter(~Q(id__in=object_id_list))
~
符号是否可以用来否定过滤器? - joninx试试这个:
from django.db import connection
def executeQuery(self, sql, params=[]):
with connection.cursor() as cursor:
cursor.execute(
sql,
params
)
使用:
list = [1, 2, 3]
"""只有在比较整数时才添加map(str,list)"""
if len(list) > 0: # only if the list is not empty
executeQuery(f"SELECT * FROM WHERE id NOT IN ({({','.join(map(str, list))})})")
MyObject.objects
的名称是什么?我在哪里可以阅读关于这个类的信息? - Serge.objects
的具体含义。它是什么? - SergeMyObject.objects.filter(time__gte=datetime.now()).exclude(id=object_id)
可以翻译为“筛选出时间大于等于当前时间且不包含指定对象ID的 MyObject 对象”。 - Jawad Hussain Shah