Marcos - Programador Delphi+PostgreSQL+Linux

10 views
Skip to first unread message

Marcos G.A

unread,
Jul 2, 2019, 9:30:47 PM7/2/19
to PyTche
Buenas pessoal, sou Marcos de Pelotas e estou a alguns meses em projeto com python + django, aprendendo enquanto vou desenvolvendo.

Bom já começo pedindo ajuda

Preciso gravar na models User do django um campo denominado "Role" do tipo boolean. Este campo vai ser True quando for um cliente se cadastrando e False para quando for um Fornecedor. A principio, no que tange visualmente, o campo aparece na tela e eu consigo marcar ele, mas seu valor não persiste no banco. Na verdade, ele nem precisaria aparecer, mas na via views.py eu gostaria de quando "origin" fosse igual a 'Client' o valor seria True e False quando 'Provider'.

models.py

class Role(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
# Adicionando os campos
role = models.BooleanField(default=False)

def __str__(self):
return self.user.username

views.py

from django.shortcuts import render, redirect
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth import authenticate, login
from django.conf import settings
from .forms import RegisterForm

def register(request, origin):
template_name = '../templates/register.html'
if request.method == 'POST':
form = RegisterForm(request.POST)
if form.is_valid():
user = form.save()
user = authenticate( username=user.username,password=form.cleaned_data['password1']
)
login(request,user)
return redirect('qnow_client:quotation_client')
#return HttpResponse("<h1>Área do marceneiro</h1>")

else:
form = RegisterForm()
context = {
'origin': origin,
'active_page_client_provider':'active',
'form': form
}
return render(request, template_name,context)

forms.py

from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User

class RegisterForm(UserCreationForm):

email = forms.EmailField(label='E-mail')
role = forms.BooleanField(label='Cliente')

def clean_email(self):
email = self.cleaned_data['email']
if User.objects.filter(email=email).exists():
raise forms.ValidationError('Já existe usuário com este E-mail!')
return email

def save(self):
user = super(RegisterForm, self).save(commit=False)
user.email = self.cleaned_data['email']
user.save()
return user

Julio Biason

unread,
Jul 3, 2019, 8:02:02 PM7/3/19
to pyt...@googlegroups.com
Opa,

Faz algum tempo que eu mexi com Django, mas eu acho que no save() do form, faltou criar e salvar o Role também.

--
Você recebeu essa mensagem porque está inscrito no grupo "PyTche" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para pytche+un...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para pyt...@googlegroups.com.
Acesse esse grupo em https://groups.google.com/group/pytche.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/pytche/615f5b1b-c7f8-4a79-b454-82b3f00f88cb%40googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.


--
Julio Biason <julio....@gmail.com>
Reply all
Reply to author
Forward
0 new messages