У меня ниже Django ORM-запрос, который исключает продукт, имеющий 0 (ноль) sale_price.
selected_attr_values = ProductAttribValue.objects.filter(
product__status_id=1,
product_id__in=product_attributes_values.values_list('product_id', flat=True).distinct()
).exclude(
product__sale_price = 0,
ifield_value = '',
field_value__isnull=False
).distinct(
"field_value",
'field_id'
).values(
'field_value',
'product_id',
'field__caption',
'field_id',
'id'
)
Приведенный выше запрос не исключает продукты, имеющие 0 sale_price.
Но после обновления запроса как показано ниже.
selected_attr_values = ProductAttribValue.objects.filter(
product__status_id=1,
product_id__in=product_attributes_values.values_list('product_id', flat=True).distinct()
).exclude(
field_value='',
field_value__isnull=False
).distinct(
"field_value",
'field_id'
).exclude(
product__sale_price=0
).values(
'field_value',
'product_id',
'field__caption',
'field_id',
'id'
)
все работает нормально.
Итак, мой вопрос, почему мне нужно вызывать exclude 2 раза, чтобы получить желаемый результат.
Спасибо.