Как я могу получить доступ к данным, хранящимся в связанной таблице ManyToMany в Django?
Я хочу сделать запрос для получения всех пользователей, за которыми "следит" другой пользователь для учебного проекта.
Когда я выполняю следующий код python:
user = User.objects.get(id=user_id)
followers = user.follows.all()
Я не получаю ошибку, но вместо этого я получаю список с объектом (называемым Follow object (4)), из которого я не могу получить доступ к свойствам, связанным с пользователем.
Я проверил эту документацию здесь: https://docs.djangoproject.com/en/3.2/topics/db/examples/many_to_many/
Но я не могу найти, где я падаю, чтобы правильно использовать этот тип модели-отношения.
Вот мои модели Django:
class User(AbstractUser):
pass
class Follow(models.Model):
user = models.ForeignKey(User, null=False, on_delete=models.CASCADE, related_name="follows")
follow = models.ManyToManyField(User, blank=True, related_name="followed_by")
Я поискал в моей Django DB, чтобы посмотреть, что происходит, и увидел, что есть реляционная таблица под названием "network_follow_follow", которая на самом деле содержит всю необходимую мне информацию и связана с объектом, который я получаю из моего запроса, вот две картинки о таблице, к которой я могу получить доступ, и о той, к которой я не знаю, как получить доступ: Данные таблицы, запрашиваемые моим кодом Таблица, которую мне нужно запросить
Теперь я ищу способ доступа к последней таблице, но знать, как я могу получить прямой доступ к данным последней таблицы, было бы намного лучше, я думаю.
Заранее спасибо.
Посмотрите, работает ли это для вас.
follow_object = Follow.objects.filter(user=user)
followers_of_user = follow_object.follow.all()
Я думаю, что проблема в том, что объект user не имеет функции user.follows. Вы создали отдельную таблицу в базе данных с данными об этой связи. Я уверен, что есть лучший способ сделать это, но это то, что я сделал с чем-то подобным в моем проекте.