我有两个模型:Like 和 Object。如何使用以下模型检索喜欢该对象的相应人群:
class Object(models.Model):
...
class Like(models.Model):
user = models.ForeignKey(User)
object = models.ForeignKey(Object)
friends = [...some list of ids...]
我想到了这两种方法:使用 Object 或使用 Like,但都不起作用。例如:
Object.objects.prefetch_related('like_set').filter(like__user__in=friends)
这会为每个对象获取相应的喜欢集,但每个 like_set 将包含所有喜欢而不是我朋友的喜欢。
另一种方法是通过Like:
Like.objects.select_related('object').filter(user__in=friends) \
.order_by('-user_id').distinct('object')
但我相信这种方式只会让我每个对象都喜欢一个。那么有没有办法让我的朋友对每个对象都喜欢呢?
编辑:为了澄清,我需要与每个 Object 对象对应的 User 对象列表,因为我希望能够打印出它们的名称。我还想尽量减少查询的数量,并愿意使用原始 SQL。