(1366, "Неверное целочисленное значение: 'CargoEmpleado object (1)' для столбца 'cargo_empleado' в строке 1")

Я пытаюсь изменить столбец cargo_empleado таблицы empleado с помощью хранимых процедур, но получаю ошибку:

  • (1366, "Неверное целочисленное значение: 'CargoEmpleado object (1)' для столбца 'cargo_empleado' в строке 1")

models.py

class CargoEmpleado(models.Model):
nombre_cargo = models.CharField(max_length=50, blank=True, null=True)

class Meta:
    managed = False
    db_table = 'Cargo_empleado'

class Empleado(models.Model):
rut = models.CharField(primary_key=True, max_length=9)
nombres = models.CharField(max_length=100, blank=True, null=True)
apellidos = models.CharField(max_length=100, blank=True, null=True)
correo_electronico = models.CharField(max_length=100, blank=True, null=True)
usuario = models.CharField(max_length=50, blank=True, null=True)
contrasena = models.CharField(max_length=255, blank=True, null=True)
activo = models.IntegerField()
cargo_empleado = models.ForeignKey(CargoEmpleado, models.DO_NOTHING, db_column='cargo_empleado')
id_empresa = models.ForeignKey('Empresa', models.DO_NOTHING, db_column='id_empresa', blank=True, null=True)
id_unida = models.ForeignKey('UnidadInterna', models.DO_NOTHING, db_column='id_unida')

views.py

def asignarrol(request):
if request.method=="POST":
    if request.POST.get('rut') and request.POST.get('cargo_empleado'):
        rolupdate= Empleado()
        rolupdate.rut=request.POST.get('rut')
        rolupdate.cargo_empleado=CargoEmpleado.objects.get(pk=(request.POST.get('cargo_empleado')))
        cursor=connection.cursor()
        cursor.execute("call SP_asignar_rol('"+rolupdate.rut+"','"+str(rolupdate.cargo_empleado)+"')")
        messages.success(request, "Al empleado "+rolupdate.rut+" se le asigno un rol ")
        return render(request, 'app/asignarrol.html')
else:
    return render(request, 'app/asignarrol.html')

SP

CREATE DEFINER=`root`@`localhost` PROCEDURE `SP_asignar_rol`(p_rut varchar(9),p_id_nuevo_cargo varchar(50))
BEGIN
    UPDATE Empleado
    SET cargo_empleado=p_id_nuevo_cargo WHERE rut=p_rut;
END

помогите мне пожалуйста!!!

str(rolupdate.cargo_empleado) должно быть str(rolupdate.cargo_empleado.pk)

В настоящее время вы передаете метод str модели Empleado, который является CargoEmpleado object ({pk/row_number})

Вернуться на верх