(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})