Após a tentativa de registrar um usuários por meio da rota /registrar/, ocorre-me o seguinte erro:
TypeError at /registrar/
'email' is an invalid keyword argument for this function
Meus arquivos são:
perfis/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=False)
nome_empresa = models.CharField(max_length=255, null=False)
contatos = models.ManyToManyField('self')
usuario = models.OneToOneField(User, related_name="perfil", on_delete='')
@property
def email(self):
return self.usuario.email
def convidar(self, usuario_convidado):
Convite(solicitante=self, convidado=usuario_convidado).save()
class Convite(models.Model):
solicitante = models.ForeignKey(Perfil, related_name='convites_feitos', on_delete='')
convidado = models.ForeignKey(Perfil, related_name='convites_recebidos', on_delete='')
def aceitar(self):
self.solicitante.contatos.add(self.convidado)
self.convidado.contatos.add(self.solicitante)
self.delete()
usuarios/forms.py:
from django import forms
from django.contrib.auth.models import User
class RegistrarUsuarioForm(forms.Form):
nome = forms.CharField(required=True)
email = forms.EmailField(required=True)
senha = forms.CharField(required=True)
telefone = forms.CharField(required=True)
nome_empresa = forms.CharField(required=True)
def is_valid(self):
valid = True
if not super(RegistrarUsuarioForm, self).is_valid():
self.adiciona_erro('Por favor, verifique os dados informados')
valid = False
user_exists = User.objects.filter(username=self.data['nome']).exists()
if user_exists:
self.adiciona_erro('Usuario ja existente')
valid = False
return valid
def adiciona_erro(self, message):
errors = self._errors.setdefault(forms.forms.NON_FIELD_ERRORS, forms.utils.ErrorList())
errors.append(message)
usuarios/views.py:
from django.shortcuts import redirect
from django.shortcuts import render
from django.contrib.auth.models import User
from django.views.generic.base import View
from perfis.models import Perfil
from usuarios.forms import RegistrarUsuarioForm
class RegistrarUsuarioView(View):
template_name = 'registrar.html'
def get(self, request):
return render(request, self.template_name)
def post(self, request):
form = RegistrarUsuarioForm(request.POST)
if form.is_valid():
dados_form = form.data
usuario = User.objects.create_user(dados_form['nome'],
dados_form['email'], dados_form['senha'])
perfil = Perfil(nome=dados_form['nome'],
email=dados_form['email'],
telefone=dados_form['telefone'],
nome_empresa=dados_form['nome_empresa'],
usuario=usuario)
perfil.save()
return redirect('indexURL')
return render(request, self.template_name, {'form': form})
E minhas rotas são:
perfis/urls.py:
from django.urls import re_path
from perfis.views import index, exibir, convidar, aceitar
urlpatterns = [
re_path(r'^$', index, name='indexURL'),
re_path(r'^perfis/(?P<perfil_id>\d+)$', exibir, name='exibirURL'),
re_path(r'^perfis/(?P<perfil_id>\d+)/convidar$', convidar, name='convidarURL'),
re_path(r'^convite/(?P<convite_id>\d+)/aceitar', aceitar, name='aceitarURL'),
]
usuarios/urls.py:
from django.urls import re_path
from usuarios.views import RegistrarUsuarioView
urlpatterns = [
re_path(r'^registrar/$', RegistrarUsuarioView.as_view(), name="registrarURL")]