Question: I am doing CS50w project4 problem, so I have to build a Social Media app. This problem has a part where in the profile of the user a follow and unfollow button has to be available. My problem is when I press the follow or unfollow button, this increase or decrease the followers and the people that the user follow. views.py def seguir(request): if request.method == 'POST': accion = request.POST.get('accion') usuario_accion = request.POST.get('usuario') usuario = request.user.username # Comprobación de si ya lo esta siguiendo y recuperación de información de usuarios perfil_usuario = User.objects.get(username=usuario) perfil_usuario_accion = User.objects.get(username=usuario_accion) esta_siguiendo = perfil_usuario.seguidos.filter(username=usuario_accion).exists() if accion == 'follow': # Si no lo esta siguiendo se añade a la lista de seguidos de uno y de seguidores del otro if esta_siguiendo == False: perfil_usuario_accion.seguidores.add(perfil_usuario) perfil_usuario.seguidos.add(perfil_usuario_accion) # Redirección a la página del usuario seguido return render(request, "network/profile.html", { "profile_user": perfil_usuario_accion, "logged_user": 0 }) else: # Comprobación de que lo siga if esta_siguiendo: perfil_usuario.seguidos.remove(perfil_usuario_accion) perfil_usuario_accion.seguidores.remove(perfil_usuario) return render(request, "network/profile.html", { "profile_user": perfil_usuario_accion, "logged_user": 0 })  profile.html {% extends "network/layout.html" %} {% block body %} <h1 id="titulo-perfil">{{ profile_user.username }} profile page</h1> <div id="contenedor-seguir"> <div id="seguidores">Followers: {{ profile_user.seguidores.count }}</div> <div id="seguidos">Following: {{ profile_user.seguidos.count }}</div> </div> {% if logged_user == 0 %} <form id="contenedor-botones" action="{% url 'follow' %}" method="post"> {% csrf_token %} <input type="hidden" name="usuario" value="{{ profile_user.username }}"> <button type="submit" class="btn btn-primary" name="accion" value="follow">Follow</button> <button type="submit" class="btn btn-primary", name="accion" value="unfollow">Unfollow</button> </form> {% endif %} {% endblock %}  models.py class User(AbstractUser): seguidores = models.ManyToManyField('self', symmetrical='false', related_name='tesiguen', blank=True) seguidos = models.ManyToManyField('self', symmetrical='false', related_name='siguiendo', blank=True)  I want that when the user press the follow button, the follower of the people he are following increase and the followers counter of the other one increase in one too.

Answer: The main problem is that you wrote symmetrical='false' as a string literal, and the truthiness of that string is, well, True. You should use the False constant, so symmetrical=False. But you are overcomplicating things. Django is perfectly capable to handle a ManyToManyField [Django-doc] in the two directions. Indeed, we can define this as: class User(AbstractUser): seguidores = models.ManyToManyField( 'self', symmetrical=False, related_name='seguidos', blank=True ) So here if A adds B to the seguidores, then A will appear in the seguidos of B, so it is automatically reflecting that. So the view then is simplified to: def seguir(request): if request.method == 'POST': accion = request.POST.get('accion') usuario_accion = request.POST.get('usuario') usuario = request.user.username # Comprobación de si ya lo esta siguiendo y recuperación de información de usuarios perfil_usuario = User.objects.get(username=usuario) perfil_usuario_accion = User.objects.get(username=usuario_accion) esta_siguiendo = perfil_usuario.seguidos.filter( username=usuario_accion ).exists() if accion == 'follow': # Si no lo esta siguiendo se añade a la lista de seguidos de uno y de seguidores del otro if not esta_siguiendo: perfil_usuario_accion.seguidores.add(perfil_usuario) # Redirección a la página del usuario seguido return render( request, "network/profile.html", {"profile_user": perfil_usuario_accion, "logged_user": 0}, ) else: # Comprobación de que lo siga if esta_siguiendo: perfil_usuario.seguidos.remove(perfil_usuario_accion) perfil_usuario_accion.seguidores.remove(perfil_usuario) return render( request, "network/profile.html", {"profile_user": perfil_usuario_accion, "logged_user": 0}, ) and the template remains the same.