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

我有一个 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')


慕森王
浏览 206回答 2
2回答

交互式爱情

尝试使用Max()函数从 django.db.models 导入 Max trades = Trade.objects.all().annotate(latest_leg_date= Max('tradeleg__date') )

白衣染霜花

这是获得最新交易的最简单和专业的方式latestTrades = Trade.objects.filter().order_by('-tradeleg__date')但是,如果您使用 Max或Min函数,它将给出相同的查询。因此可能会导致错误
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python