Приложение Django, похоже, не распознает связанное имя?

У меня есть приложение django с моделью User, которая содержит поле followers, которое служит для того, чтобы содержать тех, кто следует за пользователем, и с помощью related_name мы можем получить тех, за кем следует пользователь. И наоборот. Печать последователей пользователя работает, но я не могу заставить работать последователей.

views.py

followers = User.objects.get(username='bellfrank2').followers.all()
following = User.objects.get(username='bellfrank2').followees.all()

print(followers)
print(following)

models.py

class User(AbstractUser):
    followers = models.ManyToManyField('self', blank=True, related_name="followees")

Ошибка:

AttributeError: 'User' object has no attribute 'followees'

Согласно документации все рекурсивные отношения "многие ко многим" также симметричны по умолчанию.

Смотрите здесь: https://docs.djangoproject.com/en/4.0/ref/models/fields/#django.db.models.ManyToManyField.symmetrical

Когда Django обрабатывает эту модель, он определяет, что в ней есть поле ManyToManyField, и в результате не добавляет атрибут person_set к классу Person. Вместо этого предполагается, что поле ManyToManyField является симметричным - то есть, если я твой друг, то и ты мой друг.

Итак, чтобы ваше поле действительно создало атрибут followees, вам нужно установить атрибут symmetrical в значение False.

models.py

class User(AbstractUser):
    followers = models.ManyToManyField('self', blank=True, related_name="followees", symmetrical=False)
Вернуться на верх