Cómo manejar múltiples registros en una mutación de actualización de GraphQL Django
El siguiente método actualiza un solo registro de empleado, ¿cómo se maneja lo mismo para múltiples registros de empleados al mismo tiempo?
{
(id : 1, firstName : "John", lastName: "Snow"),
(id : 2, firstName : "Tryrion", lastName: "Lannister")
(id : 3, firstName : "Jammie", lastName: "Lannister")
}
Soy nuevo en django y graphql, por favor ayúdeme con el código y la consulta para lo mismo.
class UpdateEmp(graphene.Mutation):
emp = graphene.Field(EmployeeType)
class Arguments:
id = graphene.Int(required=True)
first_name = graphene.String()
last_name = graphene.String()
@login_required
def mutate(self, info,**kwargs):
emp = Employee.objects.get(id=kwargs.get('id'))
emp.first_name=kwargs.get('first_name')
emp.last_name=kwargs.get('last_name')
emp.save()
return UpdateEmp(emp=emp)
graphql
mutation{
uopdatemp(id : 1, firstName : "john", lastName: "Snow")
{
Employee{
id
firstName
lastName
}
}
}
davy.ai
Para actualizar varios registros de empleados al mismo tiempo, puede modificar la mutación
UpdateEmp
para aceptar una lista de argumentos utilizando el tipoList
proporcionado por graphene, como se muestra a continuación:Aquí, definimos un nuevo tipo de entrada
EmpData
que contiene los camposid
,firstName
ylastName
para un empleado. También reemplazamos el tipoField
con el tipoList
para devolver varios empleados actualizados.En el método
mutate
, recorremos la listaemp_data
, recuperamos el objetoEmployee
correspondiente basándonos en suid
, actualizamos su nombre y apellido, guardamos los cambios en la base de datos y lo agregamos a una lista de empleados actualizados. Finalmente, devolvemos esta lista como el campoemp
de la mutación.Para actualizar varios empleados utilizando esta mutación, podemos pasar una lista de objetos
EmpData
como argumentoemp_data
en la mutación de GraphQL, de la siguiente manera:Esta mutación actualizará los campos
firstName
ylastName
para los empleados con losid
1, 2 y 3 en la base de datos, y devolverá una lista de sus campos actualizados.