Django - 注释最新child的列值进行查询

Django - annotate latest child's column value to query

我有一个Trade,是TradeLeg的parent。 我现在正在查询交易,我需要注释添加到此查询的最新 TradeLeg 的 "date"。

这是我的模型:

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')

尝试使用Max()功能

from django.db.models import Max

trades = Trade.objects.all().annotate(latest_leg_date=Max('tradeleg__date'))

这是获取最新交易的最简单、最专业的方式

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

但是,如果您使用 MaxMin 函数,它会给出相同的 query.So,它可能会导致错误