mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-06 21:40:13 +03:00
Set child instance to an instance instead of QuerySet.
This commit is contained in:
parent
e34e0536b1
commit
21fa1d4852
|
@ -545,6 +545,8 @@ class ListSerializer(BaseSerializer):
|
|||
|
||||
for item in data:
|
||||
try:
|
||||
if isinstance(self.instance, QuerySet):
|
||||
self.child.instance = self.instance.get(pk=item['id'])
|
||||
validated = self.child.run_validation(item)
|
||||
except ValidationError as exc:
|
||||
errors.append(exc.detail)
|
||||
|
|
|
@ -46,6 +46,42 @@ class ShouldValidateModelSerializer(serializers.ModelSerializer):
|
|||
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):
|
||||
def test_renamed_fields_are_model_validated(self):
|
||||
"""
|
||||
|
|
Loading…
Reference in New Issue
Block a user