我有一个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')
答案 0 :(得分:2)
尝试使用Max()
功能
from django.db.models import Max trades = Trade.objects.all().annotate(latest_leg_date=Max('tradeleg__date'))
答案 1 :(得分:0)
这是获得最新交易的最简单和专业的方式
latestTrades = Trade.objects.filter().order_by('-tradeleg__date')
但是,如果您使用 Max 或 Min 函数,它将给出相同的查询,因此可能导致错误