From 48fcd02fc53f5ab10a4c03458a2bc0db778b54ea Mon Sep 17 00:00:00 2001 From: RohanJnr Date: Tue, 22 Sep 2020 02:11:22 +0530 Subject: 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. --- pydis_site/apps/api/serializers.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'pydis_site/apps') 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 -- cgit v1.2.3