Django 2.0 - 注释条件Max()字段

时间:2017-12-18 20:24:05

标签: django django-models django-orm

我有Employee模型和Invitation模型。每个Employeeone-to-many都有Invitation个关系。 Invitation有一个send_dateactive列。

我想要的是什么:

我希望获得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还是{。}}。

有什么想法吗?

0 个答案:

没有答案