Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/09/2012, 13:30
anotherdagou
 
Fecha de Ingreso: septiembre-2012
Ubicación: Playa Del Carmen
Mensajes: 1
Antigüedad: 12 años, 2 meses
Puntos: 0
Pregunta Editar Modelo con ManyToMany desde un Formulario

Hola, en los ultimos meses me entro la curiosidad de aprender un lenguaje de programación web, y opte por Python y Django. Estoy tratando de construir una aplicación para crear cotizaciones.

Tengo 3 modelos principales Cliente, Productos y Cotizacion, aparte un modelo intermedio que usa el modelo de Cotizacion llamada CotizacionProductos.

Código Python:
Ver original
  1. # Modelo para los datos del cliente
  2. class Cliente(models.Model):
  3.     fecha = models.DateTimeField(auto_now_add=True)
  4.     nombre = models.CharField(max_length=100,verbose_name='Nombre del cliente')
  5.     email= models.CharField(max_length=100,verbose_name='Email del cliente')
  6.  
  7.     def __unicode__(self):
  8.         return '%s' % (self.nombre)
  9.  
  10.  
  11. # Modelo para los datos del producto que se utiliza para generar la cotizacion del cliente
  12. class Productos(models.Model):
  13.     nombre = models.CharField(max_length=200, verbose_name='Nombre del producto o servicio')
  14.     precio = models.DecimalField(max_digits=10,decimal_places=2,default=Decimal('0.00'))
  15.  
  16.     def __unicode__(self):
  17.         return '%s' % (self.nombre)
  18.  
  19. # Modelo para generar la cotizacion de un cliente.
  20. class Cotizacion(models.Model):  
  21.     fecha = models.DateTimeField(verbose_name='Fecha de Creación', auto_now_add=True, null=True)
  22.     datoscliente = models.ForeignKey(Cliente,verbose_name='Nombre del cliente')
  23.     productos = models.ManyToManyField(Productos,through='CotizacionProductos')
  24.  
  25.     # Preformateando la salida del texto
  26.     def __unicode__(self):
  27.         return 'Factura de' +' %s ' % (self.datoscliente.nombre)

Esta es mi tabla intermedia: CotizacionProductos

Código Python:
Ver original
  1. # modelo intermediario que utiliza  el modelo Cotizacion
  2. class CotizacionProductos(models.Model):
  3.     # relacionamos el modelo con el modelo de Cotizacion
  4.     cotizacion = models.ForeignKey(Cotizacion)    
  5.     producto = models.ForeignKey(Productos)
  6.     # campo que nos permite añadir el numero de articulos de un producto o servicio a cotizar
  7.     numero_productos = models.DecimalField(max_digits=10,decimal_places=0)
  8.     precio = models.DecimalField(max_digits=10,decimal_places=2,default=Decimal('0.00'))

Con estos modelos en el Backend de Django logro hacer lo que pretendo, eso lo logro con ayuda de una propiedad que se usa en el archivo admin.py llamada TabularInline. Aquí es como se ve:


Sin embargo, quiero lograr lo mismo pero en el Frontend que estoy desarrollando. He tratado con el uso de ModelForm, formset, pero sin resultados satisfactorios aun. ¿Cual es el mejor metodo de trabajar con este tipo de Modelos que tienen una relación muchos a muchos y una tabla intermedia como es mi caso?.

Espero me puedan iluminar =)

Saludos.