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')
但是,如果您使用 Max 或 Min 函数,它会给出相同的 query.So,它可能会导致错误
我有一个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')
但是,如果您使用 Max 或 Min 函数,它会给出相同的 query.So,它可能会导致错误