mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-06 21:40:13 +03:00
Merge 21fa1d4852
into e34e0536b1
This commit is contained in:
commit
ffc85e51fe
|
@ -545,6 +545,8 @@ class ListSerializer(BaseSerializer):
|
||||||
|
|
||||||
for item in data:
|
for item in data:
|
||||||
try:
|
try:
|
||||||
|
if isinstance(self.instance, QuerySet):
|
||||||
|
self.child.instance = self.instance.get(pk=item['id'])
|
||||||
validated = self.child.run_validation(item)
|
validated = self.child.run_validation(item)
|
||||||
except ValidationError as exc:
|
except ValidationError as exc:
|
||||||
errors.append(exc.detail)
|
errors.append(exc.detail)
|
||||||
|
|
|
@ -46,6 +46,42 @@ class ShouldValidateModelSerializer(serializers.ModelSerializer):
|
||||||
fields = ('renamed',)
|
fields = ('renamed',)
|
||||||
|
|
||||||
|
|
||||||
|
class UniqueTogetherModel(models.Model):
|
||||||
|
foo = models.IntegerField()
|
||||||
|
bar = models.IntegerField()
|
||||||
|
|
||||||
|
class Meta(object):
|
||||||
|
unique_together = ('foo', 'bar')
|
||||||
|
|
||||||
|
|
||||||
|
class ExampleSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta(object):
|
||||||
|
model = UniqueTogetherModel
|
||||||
|
|
||||||
|
|
||||||
|
class TestUniqueTogether(TestCase):
|
||||||
|
def test_validation(self):
|
||||||
|
"""
|
||||||
|
Ensure that validation works when model has unique together validation.
|
||||||
|
"""
|
||||||
|
UniqueTogetherModel.objects.all().delete()
|
||||||
|
obj = UniqueTogetherModel.objects.create(foo=1, bar=2)
|
||||||
|
|
||||||
|
s = ExampleSerializer(
|
||||||
|
UniqueTogetherModel.objects.all(),
|
||||||
|
data=[
|
||||||
|
{
|
||||||
|
'foo': 5,
|
||||||
|
'id': obj.pk,
|
||||||
|
}
|
||||||
|
],
|
||||||
|
partial=True,
|
||||||
|
many=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
s.is_valid(raise_exception=True)
|
||||||
|
|
||||||
|
|
||||||
class TestPreSaveValidationExclusionsSerializer(TestCase):
|
class TestPreSaveValidationExclusionsSerializer(TestCase):
|
||||||
def test_renamed_fields_are_model_validated(self):
|
def test_renamed_fields_are_model_validated(self):
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in New Issue
Block a user