【发布时间】:2015-04-19 12:47:33
【问题描述】:
我有以下模型,想对此进行过滤查询。
class Invite(models.Model):
user = models.ForeignKey(User, related_name='user_invite')
template = models.CharField(max_length=500, null=True, blank=True)
user_time = models.TimeField(blank=True, null=True)
user_date = models.DateField(blank=True, null=True)
我必须为给定模板是最近模板的给定用户列表过滤邀请列表。
例如:
| id | user_id | template | user_time | user_date |
| -- | --------| -------- | --------- | ----------- |
| 5 | 3 | temp-A | 03:40PM | 19/04/2015 |
| 4 | 1 | temp-B | 03:40PM | 19/04/2015 |
| 3 | 2 | temp-A | 03:40PM | 19/04/2015 |
| 2 | 2 | temp-B | 01:30PM | 17/04/2015 |
| 1 | 1 | temp-A | 01:30PM | 17/04/2015 |
这里对于 user_id 1,最近的模板是 temp-B,基于 user_date 和 user_time,对于 user_id 2 和 3,它是 temp-A。这里如果给定的用户列表是[1,2,3],给定的模板是temp-A,那么ID的结果列表应该是[2,3]。
如果我进行查询
Invite.objects.filter(user_id__in = user_id_list, template = 'temp-A').values_list('user_id', flat = True)
结果将是[1,2,3],因为所有用户都收到了模板temp-A。但我想过滤给定模板是最新模板的用户。如何在不使用任何循环的情况下使用 django 过滤器查询来实现这一点?
【问题讨论】:
标签: python django django-models django-queryset