I have some model that represent a contract and has some logic to get a related amount of money (monto_control_interno_registrado) that can be lest/equal to a expected amount (monto_control_interno). I intent to filter the records that has the related amount (monto_control_interno_registrado) equal to the expected amount (monto_control_interno), and works fine but when i make a custom filter in django admin page, the pagination process execute qs.count()
and this raise a OperationalError: (1054, "Unknown column 'contratos.monto' in 'having clause'")
This is the related methods in the queryset…
class ContratoQueryset(models.QuerySet):
def with_monto_control_interno(self):
return self.annotate(
monto_control_interno=F('monto') * F('cambio') *
(F('porcentaje_interno') / 100)
)
def with_monto_control_interno_registrado(self):
return self.annotate(
monto_control_interno_registrado=Coalesce(
Sum('ingresos_control_interno__monto'), Decimal('0.00')
)
)
This is the query:
Contrato.objects.all().
with_monto_control_interno().
with_monto_control_interno_sin_registrar().
filter(monto_control_interno=F('monto_control_interno_registrado'))
Note. The query get the correct result, the problem occurs when I add .count()
, regardless of whether the query returns an empty queryset or with results, the OperationalError: (1054, "Unknown column 'contratos.monto' in 'having clause'")
is throwed. I am using mysql