【问题标题】:Django - How to add annotation to queryset for request.userDjango - 如何为 request.user 的查询集添加注释
【发布时间】:2022-01-19 13:10:45
【问题描述】:

我想根据request.user 向查询集添加新字段(通过 annotate())。 我有以下型号:

class Tweet(models.Model):
    ...
    

class Like(models.Model):
    tweet = models.ForeignKey(Tweet, related_names='likes')
    user = models.ForeignKey(AUTH_USER_MODEL, related_name='my_likes')
    type = models.CharField(
        choices=(
            ('like', _"Like"), 
            ('dislike', "Dislike")
        ),
        ...
    )

现在我要执行以下查询:

tweets = Tweet.objects.all().annotate(user_reaction=some_method(request.user))

我想要这个 annotated_field(user_reaction),用户对推文的反应。
user_reaction 有 3 个状态:
1-喜欢
2- 不喜欢
3- 无(用户不喜欢/不喜欢推文)

我想要tweets[10].user_reaction 之类的东西,然后获得之前的 3 个状态之一。 (只是likedislkieNone) 我怎样才能做到这一点?谢谢。

【问题讨论】:

    标签: django django-models django-orm django-annotate


    【解决方案1】:

    使用 Value() 转换 some_method

    tweets = Tweet.objects.all().annotate(user_reaction=Value(some_method(request.user)))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 2013-08-28
      • 2020-05-14
      • 2014-08-09
      • 2020-04-29
      • 1970-01-01
      相关资源
      最近更新 更多