Foros del Web » Programando para Internet » Python »

Comprobar registro en una App de django y enviar a otra app desde un fromulario!

Estas en el tema de Comprobar registro en una App de django y enviar a otra app desde un fromulario! en el foro de Python en Foros del Web. Como están? Tengo un problema que no consigo solucionar. Lo que quiero lograr es lo siguiente. Tengo primero que nada un modelo de Clientes client/models.py ...
  #1 (permalink)  
Antiguo 26/07/2015, 09:54
 
Fecha de Ingreso: septiembre-2012
Mensajes: 17
Antigüedad: 11 años, 7 meses
Puntos: 0
Comprobar registro en una App de django y enviar a otra app desde un fromulario!

Como están?

Tengo un problema que no consigo solucionar. Lo que quiero lograr es lo siguiente.
Tengo primero que nada un modelo de Clientes

client/models.py
Código Python:
Ver original
  1. from django.db import models
  2.  
  3.  
  4. # Create your models here.
  5. class Client(models.Model):
  6.     dni_cuit = models.CharField(max_length=11, unique=True)
  7.     first_name = models.CharField(max_length=20)
  8.     last_name = models.CharField(max_length=20)
  9.     email = models.EmailField(blank=True, null=True)
  10.     phone = models.CharField(max_length=15)
  11.     address = models.CharField(max_length=40, blank=True, null=True)
  12.     points = models.IntegerField(default=1)
  13.     timestamp = models.DateTimeField(auto_now_add=True, auto_now=False)
  14.  
  15.     def __str__(self):
  16.         return self.dni_cuit

Teniendo en cuenta esto lo que necesito hacer es chequear si un cliente existe en la base de datos utilizando su DNI_CUIT, ahora bien para esto he creado un formulario para enviar por GET a la misma vista el dni_cuit

client/forms.py
Código Python:
Ver original
  1. from django import forms
  2. from .models import Client
  3.  
  4.  
  5. # Formulario chequear si cliente existe
  6. class CheckClientForm(forms.Form):
  7.     dni_cuit = forms.CharField()
  8.  
  9.  
  10. # Formulario crear cliente
  11. class NewClientForm(forms.ModelForm):
  12.  
  13.     class Meta:
  14.         model = Client
  15.         fields = ['dni_cuit',
  16.                   'first_name',
  17.                   'last_name',
  18.                   'email',
  19.                   'address',
  20.                   ]
  21.  
  22.     def clean_dni_cuit(self):
  23.         dni_cuit = self.cleaned_data.get('dni_cuit')
  24.         return dni_cuit
  25.  
  26.     def clean_first_name(self):
  27.         first_name = self.cleaned_data.get('first_name')
  28.         return first_name
  29.  
  30.     def clean_last_name(self):
  31.         last_name = self.cleaned_data.get('last_name')
  32.         return last_name
  33.  
  34.     def clean_email(self):
  35.         email = self.cleaned_data.get('email')
  36.         return email
  37.  
  38.     def clean_address(self):
  39.         address = self.cleaned_data.get('address')
  40.         return address

Perfecto hasta ahí! el formulario me carga el mismo template pero me envía el valor dni_cuit por GET y puedo comprobar sin problema si el cliente existe o no a través de un if else

Y AHORA SURGE EL PROBLEMA QUE NO PUEDO SOLUCIONAR
"No se como hacer para que cuando haga clic el boton Comprobar DNI/CUIT del formulario me envíe a la vista addclient si el cliente NO existe, o que me envíe a la vista addorder de la app work_order en caso de que el cliente SI exista en la barra de direcciones siempre me mantengo en /clients/checkclient/ aunque me renderiza las otras páginas pero obviametne sin los formularios y demás datos obtenidos de cada view en particular"

Lo que tengo que hacer es si el cliente existe que me derive a la vista "addclient"

Si no existe a la app work_order view "addorder"

este es el archivo completo views.py de la app client
Código Python:
Ver original
  1. from django.shortcuts import render
  2.  
  3. from .forms import NewClientForm, CheckClientForm
  4. from .models import Client
  5.  
  6.  
  7. # Create your views here.
  8. def home(request):
  9.     title = "Clientes"
  10.     queryset = Client.objects.all()
  11.  
  12.     context = {
  13.                "title": title,
  14.                "queryset": queryset,
  15.               }
  16.     return render(request, "clients/home.html", context)
  17.  
  18.  
  19. def addclient(request):
  20.     title = "Zona Clientes"
  21.     form = NewClientForm(request.POST or None)
  22.     context = {
  23.                "title": title,
  24.                "form": form
  25.               }
  26.  
  27.     if form.is_valid():
  28.         instance = form.save(commit=False)
  29.         instance.save()
  30.         # Las 2 lineas anteriores pueden obviarse si solo queremos guardar
  31.         # los datos sin hacer nada con ellos con la siguiente linea
  32.         # form.save()
  33.  
  34.         context = {
  35.                    "title": "Cliente Añadido - Gracias",
  36.         }
  37.  
  38.     return render(request, "clients/addclient.html", context)
  39.  
  40.  
  41. # Chequeamos si el cliente existe y en caso de existir redireccionamos a
  42. # Nueva orden de trabajo, y si no existe a Nuevo Cliente!
  43. def checkclient(request):
  44.     title = "Comprobar Cliente"
  45.  
  46.     # Si no hay una variable GET para chequear DNI mostrar formulario para
  47.     # ingresar el DNI del cliente
  48.     if not request.GET:
  49.         form = CheckClientForm(request.GET or None)
  50.         context = {
  51.                    "title": title,
  52.                    "form": form,
  53.                   }
  54.         return render(request, "clients/checkclient.html", context)
  55.     # Si hay una variable GET procedemos a hacer el chequeo del cliente
  56.     else:
  57.         dni_cuit = request.GET['dni_cuit']
  58.         # Revisamos si el cliente existe y direccionamos a crear orden
  59.         try:
  60.             client = Client.objects.get(dni_cuit=dni_cuit)
  61.             context = {
  62.                        "client": client
  63.                       }
  64.  
  65.             return render(request, "workorder/home.html", context)
  66.         # Si el cliente NO existe enviamos a agregar nuevo cliente
  67.         except:
  68.             context = {
  69.                        "dni_cuit": dni_cuit
  70.                       }
  71.             print("El CLIENTE NO EXISTE EN LA BD!!!")
  72.             return render(request, "clients/addclient.html", context)

Etiquetas: django
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:42.