Buenas tardes. Mi pregunta es la siguiente, cuando lleno un campo en el template, al momento de dar click en el boton de guardar, me arroja lo siguiente.
Cannot assign "u'HURTADO PORTILLO IVAN MANUEL'": "ProductoFabricar.nombre_vendedor" must be a "Empleado" instance.
Esto sale al momento de querer guardar los campos que se llenan con autocomplete y que son foreign key a otros modelos.
Pero no tengo idea de como hacerlo una instancia. Si alguien pudiera decirme como. Anexo mi codigo.
VIEW
Código Python:
Ver original@render_to("ventas/producto_fabricar.html")
def producto_fabricar(request):
almacen = get_object_or_404(Almacen)
queryset = ProductoFabricarPapel.objects.none()
if request.method == "POST":
form = ProductoFabricarForm(request.POST)
formset = ProductoFabricarPapelFS(request.POST, queryset=queryset)
if form.is_valid():
nombre_vendedor = form.cleaned_data["nombre_vendedor"]
nombre_coordinador = form.cleaned_data["nombre_coordinador"]
form.save()
if formset.is_valid():
for f in formset.forms:
f.instance.producto_fabricar = form.instance
formset.save()
return clean_redirect('reporte_producto_fabricar', success="Se ha guardado correctamente la Orden de Producción")
else:
form = ProductoFabricarForm()
formset = ProductoFabricarPapelFS(queryset=queryset)
return { "title":"Agregar Orden de Producción", "form":form, "formset":formset }
MODEL
Código Python:
Ver originalclass ProductoFabricar(models.Model):
TIPOS = (
("D/CARTA", 'D/CARTA'),
("4/CARTAS", '4/CARTAS'),
("OTRO", 'OTRO'),
)
fecha_orden_produccion = models.DateField(auto_now_add=True)
cotizacion = models.ForeignKey(Movimiento, on_delete=models.PROTECT)
nombre_producto_fabricar = models.CharField(max_length=350, default='')
fecha_entrega_acordada = models.DateField(null=True, blank=True)
fecha_entrega_confirmada = models.DateField(null=True, blank=True)
criterios_aceptacion = models.CharField(max_length=350, default='')
cantidad = models.CharField(max_length=255,null=True)
medida_final = models.CharField(max_length=255,null=True)
pag_totales = models.CharField(max_length=255,null=True)
impresion = models.CharField(max_length=255,null=True)
acabado_1 = models.CharField(max_length=255,null=True)
acabado_2 = models.CharField(max_length=255,null=True)
acabado_final = models.CharField(max_length=255,null=True)
observaciones = models.TextField(blank=True)
planilla1_frentes = models.IntegerField(null=True)
planilla2_frentes = models.IntegerField(null=True)
planilla_vueltas = models.IntegerField(null=True)
planilla_en = models.CharField(choices=TIPOS, blank=False, default='', max_length=10)
planilla_en1 = models.CharField(choices=TIPOS, blank=False, default='', max_length=10)
nombre_vendedor = models.ForeignKey(Empleado, on_delete=models.PROTECT, related_name="vendedor")
nombre_coordinador = models.ForeignKey(Empleado, on_delete=models.PROTECT, related_name="coordinador")
op = models.PositiveIntegerField(blank=True, null=True)
AUTOCOMPLETE
Código Javascript
:
Ver original$().ready(function(){
$("#id_nombre_vendedor").autocomplete({
source:"/ajax/contains/empleado/",
minLength:minLength_ac
});
});