从消息列表中检查用户是否喜欢消息

check user have liked msg or not from list of messages

假设

class Msg(models.Model):
    ...
    likes = models.ManyToManyField(User,...)
    channelname = models.CharField(...)

现在我的查询集是

queryset = Msg.objects.filter(channelname='home')

这之后我应该怎么做才能变得像

[{id:xyz,liked=true},{id:tuv,liked=true},{id:abc,liked:false}]

您可以注释多对多字段的 Exists() subquery using the through model

from django.db.models import Exists, OuterRef


liked_subquery = Msg.likes.through.objects.filter(
    msg=OuterRef('pk'),  # Filter for outer queries Msg instance
    user=some_user_instance  # Filter for user whose like we are checking for
)
queryset = Msg.objects.filter(
    channelname='home'
).annotate(
    liked=Exists(liked_subquery)
).values('id', 'liked')

print(list(queryset))