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# Modelo para los datos del cliente
class Cliente(models.Model):
fecha = models.DateTimeField(auto_now_add=True)
nombre = models.CharField(max_length=100,verbose_name='Nombre del cliente')
email= models.CharField(max_length=100,verbose_name='Email del cliente')
def __unicode__(self):
return '%s' % (self.nombre)
# Modelo para los datos del producto que se utiliza para generar la cotizacion del cliente
class Productos(models.Model):
nombre = models.CharField(max_length=200, verbose_name='Nombre del producto o servicio')
precio = models.DecimalField(max_digits=10,decimal_places=2,default=Decimal('0.00'))
def __unicode__(self):
return '%s' % (self.nombre)
# Modelo para generar la cotizacion de un cliente.
class Cotizacion(models.Model):
fecha = models.DateTimeField(verbose_name='Fecha de Creación', auto_now_add=True, null=True)
datoscliente = models.ForeignKey(Cliente,verbose_name='Nombre del cliente')
productos = models.ManyToManyField(Productos,through='CotizacionProductos')
# Preformateando la salida del texto
def __unicode__(self):
return 'Factura de' +' %s ' % (self.datoscliente.nombre)
Esta es mi tabla intermedia: CotizacionProductos
Código Python:
Ver original# modelo intermediario que utiliza el modelo Cotizacion
class CotizacionProductos(models.Model):
# relacionamos el modelo con el modelo de Cotizacion
cotizacion = models.ForeignKey(Cotizacion)
producto = models.ForeignKey(Productos)
# campo que nos permite añadir el numero de articulos de un producto o servicio a cotizar
numero_productos = models.DecimalField(max_digits=10,decimal_places=0)
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.