Django - 如何将QuerySet转换为Q对象?

Jon*_*han 1 django django-queryset django-q

有没有办法在Qjango中将QuerySet转换为Q对象?

我的具体动机:我想从另一个QuerySet(qs_B)中减去一个QuerySet(qs_A).我能想到的唯一方法是使用exclude()和一个等同于qs_A的Q对象.

例:

def my_function(qs_A, qs_B):
    # Here I need to transform qs_A to a Q object q_obj_A
    qs_new = qs.exclude(q_obj_A)
    return qs_new
Run Code Online (Sandbox Code Playgroud)

Dan*_*man 5

您不需要Q对象.只需排除第二个查询集:

qs = qs_a.exclude(id__in=qs_B)
Run Code Online (Sandbox Code Playgroud)