我有一个查询,它将获取用户3的以下所有列表。我还想检查登录的用户是否跟随每个用户3的关注列表。因此,例如,假设用户3的以下列表为:2,3,4
,并且已登录的用户为2和4。因此,结果将为:2:1, 3:0 and 4:1
1表示已登录的用户正在关注,而0表示登录的用户未关注。我正在尝试使用以下查询来完成此操作:
以下模型
class Following(models.Model):
target = models.ForeignKey('User', related_name='followers', on_delete=models.CASCADE, null=True)
follower = models.ForeignKey('User', related_name='targets', on_delete=models.CASCADE, null=True)
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return '{} is followed by {}'.format(self.target, self.follower)
查询
User.objects.filter(followers__follower=3).order_by('-followers__created_at').\
annotate(is_following=Count('followers', filter=Q(followers__follower=self.request.user), distinct=True))
但是,由于某种原因,annotate
查询根本没有运行。我认为这是因为它是与主查询相同的查询,但是具有不同的参数。我如何才能使查询以我希望的方式工作?