Skip to content

Commit 7940a7b

Browse files
dan-klassonjkimbo
andcommitted
added support for partial updates in serializers (#731)
* added support for partial updates in serializers * Add test to verify partial updates Co-authored-by: Jonathan Kim <[email protected]>
1 parent 45df744 commit 7940a7b

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

graphene_django/rest_framework/mutation.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,10 @@ def get_serializer_kwargs(cls, root, info, **input):
102102
instance = get_object_or_404(
103103
model_class, **{lookup_field: input[lookup_field]}
104104
)
105+
partial = True
105106
elif "create" in cls._meta.model_operations:
106107
instance = None
108+
partial = False
107109
else:
108110
raise Exception(
109111
'Invalid update operation. Input parameter "{}" required.'.format(
@@ -115,6 +117,7 @@ def get_serializer_kwargs(cls, root, info, **input):
115117
"instance": instance,
116118
"data": input,
117119
"context": {"request": info.context},
120+
"partial": partial,
118121
}
119122

120123
return {"data": input, "context": {"request": info.context}}

graphene_django/rest_framework/tests/test_mutation.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,16 @@ def test_model_update_mutate_and_get_payload_success():
183183
assert result.cool_name == "New Narf"
184184

185185

186+
@mark.django_db
187+
def test_model_partial_update_mutate_and_get_payload_success():
188+
instance = MyFakeModel.objects.create(cool_name="Narf")
189+
result = MyModelMutation.mutate_and_get_payload(
190+
None, mock_info(), **{"id": instance.id}
191+
)
192+
assert result.errors is None
193+
assert result.cool_name == "Narf"
194+
195+
186196
@mark.django_db
187197
def test_model_invalid_update_mutate_and_get_payload_success():
188198
class InvalidModelMutation(SerializerMutation):

0 commit comments

Comments
 (0)