Like と Object の 2 つのモデルがあります。次のモデルを使用して、オブジェクトを気に入った対応する人々のセットを取得するにはどうすればよいですか?
class Object(models.Model):
...
class Like(models.Model):
user = models.ForeignKey(User)
object = models.ForeignKey(Object)
friends = [...some list of ids...]
私はこの 2 つの方法について考えました: Object を使用するか、Like を使用しますが、どちらも機能しません。例えば:
Object.objects.prefetch_related('like_set').filter(like__user__in=friends)
これにより、オブジェクトごとに対応するいいねのセットが取得されますが、各 like_set には、友達のいいねではなくすべてのいいねが含まれます。
もう 1 つの方法は、Like を通過することです。
Like.objects.select_related('object').filter(user__in=friends) \
.order_by('-user_id').distinct('object')
しかし、この方法では、オブジェクトごとに1つのようなものしか得られないと思います。では、オブジェクトごとに友達のいいねをすべて取得する方法はありますか?
編集: 明確にするために、名前を出力できるようにするため、各オブジェクト オブジェクトに対応するユーザー オブジェクトのリストが必要です。また、クエリの数を最小限に抑えたいと考えており、未加工の SQL を使用することにオープンです。