Django отношение ManyToMany - проверка на существование? - PullRequest
0 голосов
/ 28 января 2020

В настоящее время я изучаю Django и создаю приложение для Twitter.

Я использовал ManyToManyField в своей модели профиля, чтобы отразить подписчиков следующим образом:

models.py

class Profile(models.Model):
    """
        Extension of User model to save additional information
    """
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    bio = models.TextField(max_length=500, blank=True)
    followers = models.ManyToManyField('self', related_name='Followers', blank=True, symmetrical=False)
    follower_count = models.IntegerField(default=0)
    following_count = models.IntegerField(default=0)

Теперь я пытаюсь проверить, является ли пользователь уже следующий пользователь (при открытии профиля, чтобы я мог отобразить там правильную кнопку «следовать / отменить подписку»)

views.py

def profile(request, username):
    try:
        user = User.objects.get(username=username)
        user_profile = Profile.objects.get(user_id=user.id)
    except ObjectDoesNotExist:
        raise Http404("User does not exist")
    is_following = True if user.id in Profile.followers.all() else False

    return render(request, 'songapp/profile.html', {'user_profile': user_profile,
                                                    'user'        : user,
                                                    'is_following': is_following})

Проблема заключается в

Profile.followers.all()

Когда я получаю следующее AttributeError:

'ManyToManyDescriptor' object has no attribute 'all'

Я уже использовал функцию поиска и читал результаты до 8 лет, но я либо не нашел, либо не понял соответствующий ответ.

Любая помощь высоко ценится

РЕДАКТИРОВАТЬ: изображение модели Modelpicture

1 Ответ

1 голос
/ 28 января 2020

Благодаря { ссылка }

Я снова попытался выполнить миграцию, и мне действительно не хватало одного из них. Запустил manage.py makemigrations и manage.py migrate, чтобы заставить мою модель работать.

...