diff options
author | 2020-09-22 02:11:22 +0530 | |
---|---|---|
committer | 2020-09-22 02:11:22 +0530 | |
commit | 48fcd02fc53f5ab10a4c03458a2bc0db778b54ea (patch) | |
tree | 865e047bff1966102c28fe3ccdd166ddd54d8224 /pydis_site/apps | |
parent | Merge 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.
Diffstat (limited to 'pydis_site/apps')
-rw-r--r-- | pydis_site/apps/api/serializers.py | 8 |
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 |