У меня 3 модели Product,Photo,ProductLikeDislike
. Я остался присоединиться ко всем трем. Для этого я написал этот запрос:
x=Product.objects.values_list('name','photo','productlikedislike')
Благодаря этому я получаю правильное соединение слева, я напечатал и проверил вот так:
Примечание : olx
- это название моего приложения Django.
print(x.query)
SELECT "olx_product"."name", "olx_photo"."id", "olx_productlikedislike"."id"
FROM "olx_product" LEFT OUTER JOIN "olx_photo" ON ("olx_product"."id" =
"olx_photo"."reference_id_id") LEFT OUTER JOIN "olx_productlikedislike" ON
("olx_product"."id" = "olx_productlikedislike"."product_id_id") ORDER BY
"olx_product"."created" DESC
Теперь я хочу добавить дополнительное условие and
вместе с оператором ON
, например:
ON ("olx_product"."id" =
"olx_productlikedislike"."product_id_id"
and "olx_productlikedislike"."product_liked_by_id"=2)
Так что для этого кто-то предложил мне использовать FilteredRelation
Джанго. Я использовал, но он не добавляет дополнительные условия and
вместе с ON
Я использовал FilteredRelation
так:
x=Product.objects.annotate(
productlikedislike_product_liked_by_id=FilteredRelation('productlikedislike',
condition=Q(productlikedislike__product_liked_by_id=2))).values_list('name',
'photo','productlikedislike')
, но получение того же SQL-запроса без дополнительных условий and
. Я использую Django 2.1.5