How to change data using Forms. Form on Django

Asked

Viewed 644 times

0

Good afternoon guys, I made all my form using (Forms.Form) only that I am not able to create a function to edit the form data. Below is my code: (I am using the same registration form template)

py.models

class Cliente(models.Model):

    codigoCliente = models.AutoField(primary_key=True, blank=False)
    nome = models.CharField(max_length=50, null=False, blank=False)
    sobrenome = models.CharField(max_length=50, null=False, blank=False)
    rg = models.CharField(max_length=9, null=False, blank=False)
    cpf = models.CharField(max_length=11, null=False, blank=False)
    dataNascimentoCliente = models.DateField(null=True, blank=True, verbose_name='Data de Nascimento')
    numeroTelefoneFixo = models.CharField(max_length=11, null=True, blank=True, verbose_name='Telefone Fixo')
    numeroTelefoneCelular = models.CharField(max_length=11, null=True, blank=True, verbose_name='Telefone Celular')
    email = models.EmailField(max_length=100, unique=True, null=False, blank=False)
    cep = models.CharField(max_length=8, null=False, blank=False)
    endereco = models.CharField(max_length=100, null=False, blank=False)
    cidade = models.CharField(max_length=100, null=False, blank=False)
    bairro = models.CharField(max_length=100, null=False, blank=False)


    def __str__(self):
        return '{}, {}'.format(self.codigoCliente, self.nome)

    def __repr__(self):
        return '{}, {}'.format(self.codigoCliente, self.nome)

Forms.py

class CadastroCliente(forms.Form):

    codigoCliente = forms.IntegerField(widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Codigo Cliente'}))
    nome = forms.CharField(max_length=50, widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Nome do Cliente'}))
    sobrenome = forms.CharField(max_length=50, widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Sobrenome do Cliente'}))
    rg = forms.CharField(max_length=9, widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'RG'}))
    cpf = forms.CharField(max_length=11, widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'CPF'}))
    dataNascimentoCliente = forms.DateField(input_formats=['%d/%m/%Y'], widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Data Nascimento do Cliente'}))
    numeroTelefoneFixo = forms.CharField(max_length=11, widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Numero de Telefone Fixo'}))
    numeroTelefoneCelular = forms.CharField(max_length=11, widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Numero de Telefone Celular'}))
    email = forms.EmailField(max_length=100, widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Email'}))
    cep = forms.CharField(max_length=8, widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'CEP'}))
    endereco = forms.CharField(max_length=100, widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Endereço'}))
    cidade = forms.CharField(max_length=100, widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Cidade'}))
    bairro = forms.CharField(max_length=100, widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Bairro'}))

py.

urlpatterns =[


    path('', RedirectView.as_view(url='home/')),
    path('login/', myLogin, name='mylogin'),
    path('login/submit', submit_login, name='submit_login'),
    path('logout/', logout_user, name='logout'),
    path('home/', home, name='home'),

    path('cadastroCliente/', cadastroCliente, name='cadastroCliente'),
    path('atualizarCliente/<id>/', atualizarCliente, name='atualizarCliente'),
    #path('cadastroCliente/submit', submit_cadastroCliente, name='submit_cadastroCliente'),
    path('cadastroCliente/cadastroAnimal/', cadastroAnimal, name='cadastroAnimal'),
    path('cadastroAnimal/', cadastroAnimalSemSessao, name='cadastroAnimalSemSessao'),
    path('consultaRegistro/', consultaRegistro, name='consultaRegistro'),
    path('consultaDetails/<id>/', consultaDetails, name='consultaDetails'),
    path('deleteCliente/<id>/', deleteCliente, name='deleteCliente'),
    path('deleteAnimal/<id>/', deleteAnimal, name='deleteAnimal'),
    path('consultaDetails/s/cliente/<id>/', consultaClinteSemAnimal, name='consultaClinteSemAnimal')
]

py views.

def atualizarCliente(request, id, template_name='cadastroCliente.html'):


    cliente = get_object_or_404(Cliente, pk=id)
    form = CadastroCliente(request.POST or None, initial={
             'codigoCliente' : cliente.codigoCliente,
             'nome' : cliente.nome,
             'sobrenome' : cliente.sobrenome,
             'rg' : cliente.rg,
             'cpf' : cliente.cpf,
             'dataNascimentoCliente' : cliente.dataNascimentoCliente,
             'numeroTelefoneFixo' : cliente.numeroTelefoneFixo,
             'numeroTelefoneCelular' : cliente.numeroTelefoneCelular,
             'email' : cliente.email,
             'cep' : cliente.cep,
             'endereco' : cliente.endereco,
             'cidade' : cliente.cidade,
             'bairro' : cliente.bairro
         })
    print(cliente.codigoCliente)

    if request.method == 'POST':

            cliente.nome = form.cleaned_data['nome'],
            cliente.sobrenome = form.cleaned_data['sobrenome'],
            cliente.rg = form.cleaned_data['rg'],
            cliente.cpf = form.cleaned_data['cpf'],
            cliente.dataNascimento = form.cleaned_data['dataNascimentoCliente'],
            cliente.numeroTelefoneFixo = form.cleaned_data['numeroTelefoneFixo'],
            cliente.numeroTelefoneCelular = form.cleaned_data['numeroTelefoneCelular'],
            cliente.email = form.cleaned_data['email'],
            cliente.cep = form.cleaned_data['cep'],
            cliente.endereco = form.cleaned_data['endereco'],
            cliente.cidade = form.cleaned_data['cidade'],
            cliente.bairro = form.cleaned_data['bairro'],


            if form.is_valid():

                cliente.save()
            return redirect('/consultaDetails/{}/'.format(cliente.codigoCliente))
    else:
        return render(request, template_name, {'form': form, 'cliente': cliente})

template

cadastroCliente.html



extends 'base.html' %}

{% block title  %} Oliver Pet {% endblock %}

{% block content-wrapper %}

 <h1>BEM VINDO A PAGINA CADASTRO CLIENTE</h1>



 <!-- Main content -->
        <section class="content">
          <div class="box box-primary">
                <div class="box-header">
                  <h3 class="box-title">Por favor insira os dados abaixo.</h3>
                </div><!-- /.box-header -->
                <!-- form start -->
                <form  method="POST" role="form"> {% csrf_token %}
                  <div class="box-body" >
                      <div class="form-group col-md-4">
                      <label>Codigo do Cliente</label>
                         {{ form.codigoCliente }}
                    </div>
                    <div class="form-group col-md-4">
                      <label>Nome do Cliente</label>
                         {{ form.nome }}
                    </div>
                    <div class="form-group col-md-4">
                      <label>Sobrenome do Cliente</label>
                         {{ form.sobrenome }}
                    </div>
                    <div class="form-group col-md-4">
                      <label>RG</label>
                         {{ form.rg }}
                    </div>
                    <div class="form-group col-md-4">
                      <label>CPF</label>
                         {{ form.cpf }}
                    </div>
                    <div class="form-group col-md-4">
                       <label>Data Nascimento Cliente</label>
                          {{ form.dataNascimentoCliente }}
                    </div>
                    <div class="form-group col-md-4">
                      <label>Numero Telefone Fixo</label>
                         {{ form.numeroTelefoneFixo }}
                    </div>
                    <div class="form-group col-md-4">
                      <label>Numero Telefone Celular</label>
                         {{ form.numeroTelefoneCelular }}
                    </div>
                    <div class="form-group col-md-4">
                      <label>Email</label>
                         {{ form.email }}
                    </div>
                    <div class="form-group col-md-4">
                      <label>CEP</label>
                         {{ form.cep }}
                    </div>
                    <div class="form-group col-md-4">
                      <label>Endereço</label>
                         {{ form.endereco }}
                    </div>
                    <div class="form-group col-md-4">
                      <label>Cidade</label>
                         {{ form.cidade }}
                    </div>
                    <div class="form-group col-md-4">
                      <label>Bairro</label>
                         {{ form.bairro }}
                    </div>

                  </div><!-- /.box-body -->

                  <div class="box-footer">

                    <button type="submit"  class="btn btn-primary">{% if cliente %} Alterar {% else %} Cadastrar {% endif %}</button>
                  </div>
                    {% if msg %}
                      <p class="help-block">{{ msg }}</p>

                      {% endif %}
                </form>
              </div><!-- /.box -->

        </section><!-- /.content -->

{% endblock %}

1 answer

0

You can send as Dict:

form = CadastroCliente(request.POST, dict=(
             codigoCliente=cliente.codigoCliente,
             nome=cliente.nome,
             sobrenome=cliente.sobrenome,
             rg=cliente.rg,
             cpf=cliente.cpf,
             dataNascimentoCliente=cliente.dataNascimentoCliente,
             numeroTelefoneFixo=cliente.numeroTelefoneFixo,
             numeroTelefoneCelular=cliente.numeroTelefoneCelular,
             email=cliente.email,
             cep=cliente.cep,
             endereco=cliente.endereco,
             cidade=cliente.cidade,
             bairro=cliente.bairro
         ))

Browser other questions tagged

You are not signed in. Login or sign up in order to post.