【发布时间】: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 个状态之一。 (只是like、dislkie 或None)
我怎样才能做到这一点?谢谢。
【问题讨论】:
标签: django django-models django-orm django-annotate