【发布时间】:2017-03-15 00:39:02
【问题描述】:
我有一个如下所示的历史模型
class History(models.Model):
class Meta:
app_label = 'subscription'
ordering = ['-start_datetime']
subscription = models.ForeignKey(Subscription, related_name='history')
FREE = 'free'
Premium = 'premium'
SUBSCRIPTION_TYPE_CHOICES = ((FREE, 'Free'), (Premium, 'Premium'),)
name = models.CharField(max_length=32, choices=SUBSCRIPTION_TYPE_CHOICES, default=FREE)
start_datetime = models.DateTimeField(db_index=True)
end_datetime = models.DateTimeField(db_index=True, blank=True, null=True)
cancelled_datetime = models.DateTimeField(blank=True, null=True)
现在我有一个如下所示的查询集过滤
users = get_user_model().objects.all()
queryset = users.exclude(subscription__history__end_datetime__lt=timezone.now())
问题在于,在上面的排除中,它正在检查 end_datetime 以获取特定历史对象的所有行。但我只想将它与历史对象的第一行进行比较。
以下是特定历史对象的外观。所以我想写一个查询集过滤器,它只能在第一行进行日期时间比较。
【问题讨论】:
标签: django django-queryset foreign-key-relationship