Как получить в 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
Если вы что-то не поняли, спросите меня снова, английский - не мой родной язык.