Quiero unirme a la izquierda de las tablas a continuación y agregar una condición de filtro en el campo de cupón aprobado.
mis modelos
class Voucher(models.Model): voucher_id = models.UUIDField(default=uuid.uuid4, editable=False) voucher_code = models.CharField() class ApprovedCouponLine(models.Model): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) approved_coupon = models.ForeignKey(ApprovedCoupon, on_delete=models.CASCADE, related_name='approved_coupon_lines') coupon_code = models.ForeignKey(Voucher, on_delete=models.CASCADE, related_name='approved_coupon_lines_coupons')
Intenté esto, pero muestra la unión interna.
queryset = Voucher.objects.filter(approved_coupon_lines_coupons__approved_coupon_id='CD5FC4FE').values_list('code', flat=True)
Consulta actual:
SELECT "voucher_voucher"."code", "voucher_approvedcouponline"."id" FROM "voucher_voucher" INNER JOIN "voucher_approvedcouponline" ON ("voucher_voucher"."id" = "voucher_approvedcouponline"."coupon_code_id") WHERE "voucher_approvedcouponline"."approved_coupon_id" = 'CD5FC4FE'
Consulta esperada:
SELECT "voucher_voucher"."code", "voucher_approvedcouponline"."id" FROM "voucher_voucher" LEFT JOIN "voucher_approvedcouponline" ON ("voucher_voucher"."id" = "voucher_approvedcouponline"."coupon_code_id" AND "voucher_approvedcouponline"."approved_coupon_id" = 'CD5FC4FE' )
¿Qué me perdí en el ejemplo anterior?