1
У меня есть следующий запрос в Postgres:Преобразование SQL QUERY в Django
SELECT a.id, a.name, a.code,
(SELECT coalesce((SELECT MAX(value) FROM financials WHERE client_key=a.id AND year=2016), 0) AS ca_vlr_n)
FROM clients a
Я хочу, чтобы перевести его в Django, но я не знаю, как справиться с этой Coalesce. Я сделал это:
queryset = Client.objects.values('name', 'code').annotate(ca_vlr_n=Coalesce(Max('financial__value'), V(0)))
Но я не знаю, как поставить условие на год.
Моя модель:
class Client(models.Model):
name = models.CharField(help_text="Client's Name", max_length=128, unique=True)
code = models.CharField(help_text="Client's CUI", max_length=50)
class Financial(models.Model):
year = models.PositiveSmallIntegerField()
client = models.ForeignKey(Client, on_delete=models.CASCADE)
value = models.BigIntegerField()
Спасибо, но это не нормально. Он возвращает мне больше, чем мне нужно. Он возвращает мне все финансовые годы для всех моих клиентов. – tatulea
@tatulea Попробуйте добавить фильтр. См. Обновленный ответ –
Это исключение: django.core.exceptions.FieldError: не удается разрешить ключевое слово «financial_set» в поле. – tatulea