Django - аннотировать значение последнего дочернего столбца для запроса - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть Trade, которая является родителем TradeLeg.Сейчас я запрашиваю сделку, и мне нужно аннотировать «дату» последнего TradeLeg, добавленного к этому запросу.

Вот мои модели:

class Trade(models.Model):
    name = models.CharField(
        default='',
        max_length=50,
        blank=True,
    )
    date = models.DateField(
        default='',
        blank=True,
        null=True,
    )


Class TradeLeg(models.Model):
    trade = models.ForeignKey(
        Trade,
        on_delete=models.CASCADE
    )
    date = models.DateField(
        default='',
        blank=True,
        null=True,
    )

Вот мой ошибочный запрос:

trades = Trade.objects.all().annotate(latest_leg_date='tradeleg__date__first')

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Это самый простой и профессиональный способ получить последние сделки

latestTrades = Trade.objects.filter().order_by('-tradeleg__date')

Однако, если вы используете функцию Макс или Мин , он выдаст тот же запрос.Так что это может быть причиной ошибки

0 голосов
/ 11 декабря 2018

Попробуйте использовать Max() функцию

from django.db.models import Max

trades = Trade.objects.all().annotate(latest_leg_date=<b>Max('tradeleg__date')</b>)
...