Estoy usando un backend de Django con postgresql .
Digamos que tengo una base de datos con una tabla llamada Employees con unos 20.000 registros.
Necesito permitir que varios usuarios editen y verifiquen el campo Area Code de área para cada registro en Employees .
Preferiría permitir que un usuario vea los registros, digamos, 30 a la vez (para reducir el agotamiento).
¿Cómo puedo seleccionar 30 registros a la vez de Employees para enviarlos a la interfaz de usuario de front-end para su edición, sin permitir que varios usuarios editen los mismos registros o volver a seleccionar un registro que ya se verificó ?
No necesito comentarios sobre el contenido de la base de datos (estos son nombres de campos y tablas de ejemplo).
Una forma de hacer esto sería agregar 2 campos más a su tabla, digamos, por ejemplo, assigned_to y verified . Puede actualizar assigned_to , que puede ser una clave externa para el usuario verificador, cuando permite que el usuario vea ese Empleado. Esto creará un registro que evitará que el Empleado sea elegido dos veces. assigned_to también puede funcionar como un registro de quién verificó a este empleado para futuras referencias.
verified podría ser simplemente un campo booleano que realiza un seguimiento si el empleado ya ha sido verificado y puede actualizarse cuando el usuario confirma la verificación
Las selecciones reales se pueden hacer así:
employees = Employee.objects.filter(assigned_to=None, verified=False)[:30]Entonces
for emp in employees: emp.assigned_to = user emp.save()Nota: Esto aún puede causar una condición de carrera si 2 usuarios hacen esta solicitud exactamente al mismo tiempo. Para evitar esto, otra posibilidad podría ser dividir las tablas de empleados en grupos para cada usuario sin solapamiento. Esto aseguraría que nunca 2 usuarios tuvieran los mismos empleados