我使用此查询集
<Queryset[<UsePoint:a>,]>
<name:a, like_users_count:3>
我的代码:
user_exists = User.objects.filter(
pk=self.request.user.pk,
pk__in=OuterRef('like_users'),
)
queryset = queryset.annotate(is_like=Exists(user_exists))
我认为它会返回一个这样的查询集
<Queryset[<UsePoint:a>,]>
<name:a, is_like:true, like_users_count:3>
但是它返回两个查询集
<Queryset[<UsePoint:a>,<UsePoint:a>]>
<name:a, is_like:false, like_users_count:2>
<name:a, is_like:true, like_users_count:1>
我如何区分这些结果?
#model
class UsePoint(models.Model):
name = models.CharField(
max_length=50,
)
category = models.ForeignKey(
'UsePointCategory',
on_delete=models.CASCADE,
)
like_users = models.ManyToManyField(
settings.AUTH_USER_MODEL,
blank=True,
)
答案 0 :(得分:1)
您可以使用
user_exists = User.objects.filter(
pk=self.request.user.pk,
pk__in=OuterRef('like_users'),
).first()
它将返回一个对象
或者您可以使用
user_exists = User.objects.filter(
pk=self.request.user.pk,
pk__in=OuterRef('like_users'),
).distinct()
它将重新调整不同的对象