aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar RohanJnr <[email protected]>2020-09-22 02:11:22 +0530
committerGravatar RohanJnr <[email protected]>2020-09-22 02:11:22 +0530
commit48fcd02fc53f5ab10a4c03458a2bc0db778b54ea (patch)
tree865e047bff1966102c28fe3ccdd166ddd54d8224
parentMerge branch 'master' into user_endpoint (diff)
optimize bulk update endpoint by using Model.objects.bulk_update() method
The Model.objects.bulk_update() method greatly reduces the number of SQL queries by updating all required instances in 1 query.
-rw-r--r--pydis_site/apps/api/serializers.py8
1 files changed, 7 insertions, 1 deletions
diff --git a/pydis_site/apps/api/serializers.py b/pydis_site/apps/api/serializers.py
index ae57b307..1f24d29f 100644
--- a/pydis_site/apps/api/serializers.py
+++ b/pydis_site/apps/api/serializers.py
@@ -281,10 +281,16 @@ class UserListSerializer(ListSerializer):
data_mapping = {item['id']: item for item in validated_data}
updated = []
+ fields_to_update = set()
for user_id, data in data_mapping.items():
+ for key in data:
+ fields_to_update.add(key)
user = instance_mapping.get(user_id)
- updated.append(self.child.update(user, data))
+ user.__dict__.update(data)
+ updated.append(user)
+ fields_to_update.remove("id")
+ User.objects.bulk_update(updated, fields_to_update)
return updated