Olá Olá, saudações...
Sou novo no Django e estou com dificuldades para inserir registros na tabela perfil_followers.
Se alguém puder me ajudar, desde já agradecido.
Segue o código:
models.py
from django.db import models
from django.contrib.auth.models import User
class Perfil(models.Model):
nome = models.CharField(max_length=255, null=False)
telefone = models.CharField(max_length=15, null=True, blank=True)
endereco_maps = models.CharField(max_length=255, null=True, blank=True)
imagem_perfil = models.ImageField(null=True, blank=True, upload_to='uploads/fotoperfil/')
imagem_capa = models.ImageField(null=True, blank=True, upload_to='uploads/fotocapa/')
cor = models.CharField(max_length=10, default='#455A64')
followers = models.ManyToManyField(User, blank=True, related_name='followers')
usuario = models.OneToOneField(User, related_name='perfil', on_delete=models.CASCADE)
@property
def email(self):
return self.usuario.email
views.py
def exibir_perfil(request, perfil_id):
dados = {}
dados['perfil'] = Perfil.objects.get(id=perfil_id)
dados['perfil_logado'] = request.user.perfil
dados['ja_eh_contato'] = dados['perfil_logado'].followers.filter(id=dados['perfil'].id)
dados['timeline'] = dados['perfil'].posts.all()
dados['followers'] = dados['perfil'].followers.all()
followers = dados['followers']
if len(followers) == 0:
dados['ja_eh_contato'] = False
for follower in followers:
if follower == request.user:
dados['ja_eh_contato'] = True
break
else:
dados['ja_eh_contato'] = False
dados['number_of_followers'] = len(followers)
return render(request, 'perfil.html', dados)
class AddFollower(LoginRequiredMixin, View):
def post(self, request, perfil_id, *args, **kwargs):
dados = {}
dados['perfil'] = Perfil.objects.get(id=perfil_id)
dados['perfil_logado'] = request.user
dados['perfil_logado'].followers.add(request.user)
return redirect('profile', id=dados['perfil'].id)
class RemoveFollower(LoginRequiredMixin, View):
def post(self, request, perfil_id, *args, **kwargs):
dados = {}
dados['perfil'] = Perfil.objects.get(id=perfil_id)
dados['perfil'].followers.remove(request.user)
return redirect('profile', id=dados['perfil'].id)
perfil.html
<div class="mb-3">
<p>Seguidores: {{ number_of_followers }}</p>
{% if perfil_logado == request.user %}
{% else %}
{% if ja_eh_contato %}
<form method="POST" action="{% url 'remove-follower'
perfil.id %}">
{% csrf_token %}
<button class="btn btn-outline-danger" type="submit">Deixar de Seguir</button>
</form>
{% else %}
<form method="POST" action="{% url 'add-follower'
perfil.id %}">
{% csrf_token %}
<button class="btn btn-outline-success" type="submit">Seguir</button>
</form>
{% endif %}
{% endif %}
</div>