Skip to content

Commit 1b89920

Browse files
authored
Merge pull request #117 from robinchow/master
UniqueFieldsMixin validation optional for partial update
2 parents 9e8aaca + 713843a commit 1b89920

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

drf_writable_nested/mixins.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -401,6 +401,8 @@ def get_fields(self):
401401

402402
def _validate_unique_fields(self, validated_data):
403403
for field_name in self._unique_fields:
404+
if self.partial and field_name not in validated_data:
405+
continue
404406
unique_validator = UniqueValidator(self.Meta.model.objects.all())
405407
try:
406408
# `set_context` removed on DRF >= 3.11, pass in via __call__ instead

tests/test_unique_fields_mixin.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,3 +68,13 @@ def test_create_update_failed(self):
6868
ctx.exception.detail,
6969
{'child': {'field': ['This field must be unique.']}}
7070
)
71+
72+
def test_unique_field_not_required_for_partial_updates(self):
73+
child = models.UFMChild.objects.create(field='value')
74+
serializer = serializers.UFMChildSerializer(
75+
instance=child,
76+
data={},
77+
partial=True
78+
)
79+
self.assertTrue(serializer.is_valid())
80+
serializer.save()

0 commit comments

Comments
 (0)