【发布时间】:2020-12-21 12:32:31
【问题描述】:
class Count(models.Model):
start_time = models.DateTimeField(null = True, blank = True)
end_time = models.DateTimeField(null = True, blank = True)
class AccessRecord(models.Model):
user = models.ForeignKey(get_user_model(), related_name = 'accesses', on_delete = models.CASCADE)
count = models.ForeignKey(Count, related_name = 'accesses', on_delete = models.CASCADE)
使用此模型方案,我如何根据用户过滤 Count 查询集?
例如,我希望每个计数对象都具有具有特定用户 ID 的第一个访问记录。
user_id = 2
all_counts = Count.objects.all()
list(filter(lambda x: x.accesses.first().user.pk == user_id, all_counts))
^^ 这会起作用。但是我得到一个列表而不是查询集(我仍然需要 order_by 等)
这里最好的选择是什么?
编辑。保证每个 Count 至少有一个访问记录。
【问题讨论】:
-
你能解释一下为什么“first”访问记录吗?
-
这与我的用例有关。我需要找到与该用户具有第一个访问记录的每个计数。