I want to add new field to queryset (by annotate()) according to request.user
.
I have following models:
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")
),
...
)
Now I want to execute following query:
tweets = Tweet.objects.all().annotate(user_reaction=some_method(request.user))
And I want to this annotated_field(user_reaction), reaction of user to the tweet.
user_reaction
has 3 states:
1- Like
2- Dislike
3- None (user hasn't like/dislike the tweet)
I want to have something like tweets[10].user_reaction
, and after that get one of 3 states that came before. (just like
, dislkie
or None
)
How can I do this? thanks.