如何一次一个地选择记录以供多个用户编辑?

时间:2017-04-25 17:16:39

标签: django performance postgresql psycopg2

我在 postgresql 中使用 Django 后端。

假设我有一个名为Employees的数据库,其中有大约20,000条记录。

我需要允许多个用户编辑并验证Area Code中每条记录的Employees字段。

我更愿意让用户一次查看30条记录(以减少倦怠)。

如何从Employees一次选择30条记录发送到前端用户界面进行编辑,如何不让多个用户编辑相同的记录,或者重新选择已经记录的记录验证

我不需要对数据库的内容发表评论(这些是示例表和字段名称)。

1 个答案:

答案 0 :(得分:0)

执行此操作的一种方法是在表格中添加另外两个字段,例如assigned_toverified。当您允许用户查看该员工时,您可以更新assigned_to,它可以是验证用户的外键。这将创建一个记录,阻止Employee被选中两次。 assigned_to也可以作为谁验证此员工以供将来参考的记录加倍。

verified可以只是一个布尔字段,可以跟踪员工是否已经过验证,并且可以在用户确认验证时进行更新

实际选择可以这样做:

employees = Employee.objects.filter(assigned_to=None, verified=False)[:30]

然后

for emp in employees:
        emp.assigned_to = user
        emp.save()

注意:如果2个用户在同一时间发出此请求,则仍可能导致竞争条件。为避免这种情况,另一种可能性是将员工表分组为每个用户没有重叠的组。这将确保没有2个用户拥有相同的员工