在注释中创建相同的查询

时间:2018-12-23 07:35:19

标签: python django django-models

我有一个查询,它将获取用户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查询根本没有运行。我认为这是因为它是与主查询相同的查询,但是具有不同的参数。我如何才能使查询以我希望的方式工作?

0 个答案:

没有答案