#4917 - Remove O(n) queries in m2m updates

This commit is contained in:
orf 2017-04-24 20:55:16 +01:00 committed by GitHub
parent a0602bce4c
commit 64ff8c5b0b

View File

@ -491,11 +491,14 @@ class ManyRelatedField(Field):
self.fail('not_a_list', input_type=type(data).__name__)
if not self.allow_empty and len(data) == 0:
self.fail('empty')
values = list(self.child_relation.get_queryset.filter(pk__in=data))
missing_primary_keys = set(v.pk for v in values) - set(data)
if missing_primary_keys:
self.fail('missing_ids', ids_not_found=list(missing_primary_keys))
return [
self.child_relation.to_internal_value(item)
for item in data
]
return values
def get_attribute(self, instance):
# Can't have any relationships if not created