Cannot assign “‘1′”: “Cliente.tipo_cliente” must be a “TipoCliente” instance

publicado por: Anonymous

Estoy tratando de guardar el formulario que hize en django el cual tiene una foreignkey del modelo cliente al modelo tipo de cliente pero al momento de guardar sale este error.

Cannot assign “‘1′”: “Cliente.tipo_cliente” must be a “TipoCliente”
instance

modelos.py

class TipoCliente(models.Model):
    codigo = models.IntegerField()
    descripcion = models.CharField(max_length=40)

class Cliente(models.Model):
    tipo_cliente = models.ForeignKey('TipoCliente')
    nombre = models.CharField(max_length=80)

views.py

tipo_cliente = TipoCliente.objects.all()

cliente = Cliente()
cliente.tipo_cliente = request.POST['tipo_cliente']
cliente.nombre = request.POST['nombre']
cliente.save()

error

ValueError at /generales/clientes

Cannot assign “‘1′”: “Cliente.tipo_cliente” must be a “TipoCliente” instance.

Django Version: 1.10.2

Exception Type: ValueError

Exception Value:

Cannot assign “‘1′”: “Cliente.tipo_cliente” must be a “TipoCliente” instance.

Utilizando el form de Django funciona perfectamente pero me toca hacerlo sin usar el form de Django.

solución

El error es claro , tipo_cliente debe recibir un Objeto de tipo TipoCliente pero en su lugar usted asigna una cadena que recibe por POST
Filtrar el TipoCliente por el tipo que recibe por POST para luego asignar al atributo tipo_cliente del Modelo Cliente

cliente = Cliente()
cliente.tipo_cliente = TipoCliente.objects.get(codigo = request.POST['tipo_cliente'])
cliente.nombre = request.POST['nombre']
cliente.save()
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *