2010-07-09 1 views
1

Есть ли способ преобразовать QuerySet в объект Q в django?Django - Как преобразовать QuerySet в объект Q?

Мое особое побуждение: Я хотел бы вычесть один QuerySet (qs_A) из другого QuerySet (qs_B). Единственный способ, которым я могу думать, - использовать exclude() и эквивалент Q-объекта qs_A.

Пример:

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 

ответ

5

Вам не нужен объект Q. Просто исключить второй QuerySet:

qs = qs_a.exclude(id__in=qs_B) 
+1

Это просто и будет работать, но я подозреваю, что это менее эффективно и более децибел интенсивным, по крайней мере, во многих случаях, чем на самом деле, имеющие объект Q, который представляет собой простое условие. – Jonathan

+1

Преждевременная оптимизация - это корень всего зла. Или, по крайней мере, плохо. –

+0

@Matthew - вы хотите сказать, что django является преждевременным веб-каркасом ?! Или вы имели в виду, что мой проект преждевременен ?! – Jonathan

 Смежные вопросы

  • Нет связанных вопросов^_^