Как получить в sql-запросе с отношениями "многие ко многим" все экземпляры, с которыми связан пользователь

Как получить все экземпляры, в которых состоит пользователь Many to Many relationship в SQL. (PostgreSQL)

У меня есть следующая таблица, использующая django:

models.py

...

from django.contrib.auth import get_user_model
...

User = get_user_model()


class Member(models.Model):

    ...
    member = models.ManyToManyField(User, related_name="user_member")
    status = models.CharField(max_length=20, choices=STATUS)
    created = models.DateTimeField(auto_now_add=True)

query

user = User.objects.get(id=1)

user.member.all()

# result => give me all instances where user 1 is associated in Member table

Что будет эквивалентом в sql приведенного выше запроса django?

Любая помощь будет очень признательна

Отношения "многие ко многим" всегда используют третью таблицу для записи отношений, это происходит за ORM.

Вы хотите что-то вроде:

SELECT * 
FROM user_membership um 
INNER JOIN membership m ON um.id_membership = m.id 
INNER JOIN users u ON um.id_user = u.id
WHERE u.id = 1

Если вы что-то не поняли, спросите меня снова, английский - не мой родной язык.

Вернуться на верх