Как я могу получить список комнат, к которым пользователь присоединился через другую модель

#django #django-rest-framework

Вопрос:

У меня есть 3 модели: User, Room, Join. Я пытаюсь получить список комнат, к которым присоединился пользователь, но я не знаю как.

 # models.py
class User(models.Model):
  full_name = models.CharField(max_length=40)

class Room(models.Model):
  room_name = models.CharField(max_length=40)
  create_by = models.ForeignKey(User, on_delete=models.CASCADE)

class Join(models.Model):
  room = models.ForeignKey(Room, on_delete=models.CASCADE)
  user = models.ForeignKey(User, on_delete=models.CASCADE)
 

Я пытался использовать related_name и related_query_name, но, к сожалению, я не знаю, как это работает. Если мой вопрос дублируется, пожалуйста, предоставьте мне несколько ключевых слов, заранее благодарю вас.

Ответ №1:

Вы можете получить Room s, для которых Join myuser существует a с помощью:

 Room.objects.filter(join__user=myuser) 

Если возможно, что одно и то же User присоединилось к одному и тому же Room несколько раз, вы можете работать с:

 Room.objects.filter(join__user=myuser).distinct() 

Комментарии:

1. Могу ли я получить ссылку на документацию об этом «join__user»? Большое вам спасибо!

2. @HaloNewWorld: смотрите раздел Создание запросов , в котором пошагово объясняется, как определять запросы.