Джанго: Я получаю: Cannot query "admin": Должен быть экземпляр "Follow" в моем коде при попытке реализовать кнопку unfollow

Я новичок и пытаюсь создать небольшой сетевой проект, в котором пользователи могут следить друг за другом. Я правильно реализовал кнопку follow, так что она обновляет мои модели и отображает правильную информацию пользователям, но я не могу заставить кнопку unfollow работать правильно. Я предполагаю, что это связано с тем, как я реализовал модель follow (с полем many to many), но я хотел бы реализовать ее таким образом для практики... В любом случае, вот код:

Модели:

class User(AbstractUser):
    pass
class Follow(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="user_follow")
    following = models.ManyToManyField(User, blank=True, related_name="followers")

И просмотр:

def users(request, username):
    """Displaying user profiles"""

    if request.method == "POST":
            user = request.user
            profile = User.objects.get(username=username)
            follow = Follow(user=user)
            follow.save()
            if "unfollow" in request.POST:
                profile.followers.remove(user)
                follow.following.remove(profile)
                return HttpResponseRedirect(reverse('users', args=(username,)))
            elif "follow" in request.POST:
                follow.following.add(profile)
                return HttpResponseRedirect(reverse('users', args=(username,)))

Этот код выдает: "ValueError at /users/test Невозможно запросить "admin": Должен быть экземпляр "Follow"." в строке profile.followers.remove(user)...

Поиграв с ним в shell я обнаружил (по крайней мере я так думаю), что строка под ним (follow.following.remove(profile) - которая, кстати, была там до того, как я попробовал с profile.followers.remove(user)) удаляет профиль из модели Follow, но почему-то сама по себе не обновляется в модели Users (для followers) ???

    from django.db import models
    
    # Create your models here.
    class User(models.Model):
        name = models.CharField(max_length=40)
        pwd = models.CharField(max_length=40)
    
        def __str__(self):
            return self.name
    
    
    class Follow(models.Model):
        user = models.OneToOneField(User, on_delete=models.CASCADE)
        another_user = models.ManyToManyField(User, related_name='another_user')
    
        def __str__(self):
            return self.user.name
============================================================================
views.py

from django.shortcuts import render, redirect
from django.http import HttpResponse
from .models import User, Follow
# Create your views here.
def index(request):
    if 'user' in request.session:
        return render(request, 'index.html')
    else:
        return redirect('login')



def profile(request, user_name):
    user_obj = User.objects.get(name=user_name)
    session_user = User.objects.get(name=request.session['user'])
        session_following, create = Followers.objects.get_or_create(user=session_user)
    following, create = Followers.objects.get_or_create(user=session_user.id)
    check_user_followers = Followers.objects.filter(another_user=user_obj)

    is_followed = False
    if session_following.another_user.filter(name=user_name).exists() or following.another_user.filter(name=user_name).exists():
        is_followed=True
    else:
        is_followed=False
    param = {'user_obj': user_obj,'followers':check_user_followers, 'following': following,'is_followed':is_followed}
    if 'user' in request.session:
        return render(request, 'profile.html', param)
    else:
        return redirect('index')


def follow_user(request, user_name):
    other_user = User.objects.get(name=user_name)
    session_user = request.session['user']
    get_user = User.objects.get(name=session_user)
    check_follower = Followers.objects.get(user=get_user.id)
    is_followed = False
    if other_user.name != session_user:
        if check_follower.another_user.filter(name=other_user).exists():
            add_usr = Followers.objects.get(user=get_user)
            add_usr.another_user.remove(other_user)
            is_followed = False
            return redirect(f'/profile/{session_user}')
        else:
            add_usr = Followers.objects.get(user=get_user)
            add_usr.another_user.add(other_user)
            is_followed = True
            return redirect(f'/profile/{session_user}')

        return redirect(f'/profile/{session_user}')
    else:
        return redirect(f'/profile/{session_user}')

============================================================================= >Use This For Reference... Follow And Unfollw Logic

Вернуться на верх