我有Employee
模型和Invitation
模型。每个Employee
与one-to-many
都有Invitation
个关系。 Invitation
有一个send_date
和active
列。
我想要的是什么:
我希望获得Employee QuerySet
注释最高send_date
相关仅限活跃 Invitations
。
我的模特:
# App is named events
class Employee(models.Model):
name = models.CharField(max_length=255, blank=True, default="")
class Invitation(models.Model):
employee = models.ForeignKey('events.Employee', on_delete=models.CASCADE, related_name='invitations')
send_date = models.DateTimeField(default=timezone.now)
active = models.BooleanField(default=True)
我尝试过的事情:
query = Employee.objects.annotate(
invitation_max_send_date=Max(
Case(
When(
invitations__active=True,
then=F('invitations__send_date')
),
When(
invitations__active=False,
then=None
),
output_field=models.DateField()
)
),
)
结果:
每个invitation_max_send_date
的{{1}}都包含最高Employee
个相关邀请,无论是send_date
还是{。}}。
有什么想法吗?