From 54bb9849c2dc3d43dfbab81d5c3b406e935ebd5d Mon Sep 17 00:00:00 2001 From: orf Date: Mon, 24 Apr 2017 20:58:08 +0100 Subject: [PATCH] Update relations.py --- rest_framework/relations.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/rest_framework/relations.py b/rest_framework/relations.py index f5d83c68b..dca6a2634 100644 --- a/rest_framework/relations.py +++ b/rest_framework/relations.py @@ -492,11 +492,17 @@ class ManyRelatedField(Field): 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 self.child_relation.use_pk_only_optimization: + 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)) + if missing_primary_keys: + self.fail('missing_ids', ids_not_found=list(missing_primary_keys)) + else: + values = [ + self.child_relation.to_internal_value(item) + for item in data + ] return values