У меня проблема с методом extra () набора запросов.
Итак, я получаю свои объекты с помощью:
invoices = Invoice.objects.select_related().filter(quantity__gt=0,begin__gte=values['start_day'],end__lte=values['end_day'])
Так что это работает, у меня есть счета.После того, как я использую другой фильтр времени ():
invoices = invoices.filter(max__gte=duration)
Это тоже работает.Но после этого мне нужно использовать extra () из-за моего запроса, поэтому у меня есть это:
cond = 'discount="YES" AND priceeuro*(%d%%fixe)<=%d'
invoices = invoices.extra(where=[cond],params=[duration,price])
Ну, это работает, но моя переменная invoices содержит больше элементов, чем раньше.Как будто два фильтра () не использовались.
Если вы знаете, почему,
спасибо.
РЕДАКТИРОВАТЬ:
Это SQL, связанный с запросом:
WHERE
("invoice"."product_id" IN (
SELECT U0."id"
FROM "product" U0
WHERE U0."accommodation_id" IN (
SELECT U0."id"
FROM "accommodation" U0
WHERE U0."resort_id" IN (
SELECT U0."id"
FROM "resort" U0
WHERE U0."area_id" IN (
SELECT U0."id"
FROM "area" U0
WHERE U0."country_id" = 9
))))
AND "invoice"."quantity" > 0
AND "invoice"."end" <= 2010-12-31
AND "invoice"."begin" >= 2010-12-01
AND fixe % 7 = 0
AND (discount="YES" AND pricediscountincludedeuro*(7% fixe)<=250)OR(discount="NO" AND priceeuro*(7% fixe)<=250))