mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-07-23 06:29:58 +03:00
Merge c5dfec8513
into da1aa5542c
This commit is contained in:
commit
fae6964f74
|
@ -328,7 +328,10 @@ class RelatedField(WritableField):
|
||||||
return
|
return
|
||||||
|
|
||||||
value = data.get(field_name)
|
value = data.get(field_name)
|
||||||
into[(self.source or field_name)] = self.from_native(value)
|
if self.blank and value is None:
|
||||||
|
into[(self.source or field_name)] = None
|
||||||
|
else:
|
||||||
|
into[(self.source or field_name)] = self.from_native(value)
|
||||||
|
|
||||||
|
|
||||||
class ManyRelatedMixin(object):
|
class ManyRelatedMixin(object):
|
||||||
|
|
|
@ -149,3 +149,8 @@ class Person(RESTFrameworkModel):
|
||||||
# Model for issue #324
|
# Model for issue #324
|
||||||
class BlankFieldModel(RESTFrameworkModel):
|
class BlankFieldModel(RESTFrameworkModel):
|
||||||
title = models.CharField(max_length=100, blank=True)
|
title = models.CharField(max_length=100, blank=True)
|
||||||
|
|
||||||
|
|
||||||
|
class BlankRelatedFieldModel(RESTFrameworkModel):
|
||||||
|
blank_field = models.OneToOneField('BasicModel', blank=True, null=True)
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ from django.test import TestCase
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
from rest_framework.tests.models import (ActionItem, Anchor, BasicModel,
|
from rest_framework.tests.models import (ActionItem, Anchor, BasicModel,
|
||||||
BlankFieldModel, BlogPost, CallableDefaultValueModel, DefaultValueModel,
|
BlankFieldModel, BlogPost, CallableDefaultValueModel, DefaultValueModel,
|
||||||
ManyToManyModel, Person, ReadOnlyManyToManyModel)
|
ManyToManyModel, Person, ReadOnlyManyToManyModel, BlankRelatedFieldModel)
|
||||||
|
|
||||||
|
|
||||||
class SubComment(object):
|
class SubComment(object):
|
||||||
|
@ -536,3 +536,27 @@ class BlankFieldTests(TestCase):
|
||||||
"""
|
"""
|
||||||
serializer = self.not_blank_model_serializer_class(data=self.data)
|
serializer = self.not_blank_model_serializer_class(data=self.data)
|
||||||
self.assertEquals(serializer.is_valid(), False)
|
self.assertEquals(serializer.is_valid(), False)
|
||||||
|
|
||||||
|
|
||||||
|
class BlankRelatedFieldModelTests(TestCase):
|
||||||
|
def setUp(self):
|
||||||
|
class BlankInlineRelatedFieldModelSerializer(serializers.ModelSerializer):
|
||||||
|
blank_field = serializers.PrimaryKeyRelatedField(blank=True, queryset=BasicModel.objects.all())
|
||||||
|
class Meta:
|
||||||
|
model = BlankRelatedFieldModel
|
||||||
|
|
||||||
|
class BlankRelatedFieldModelSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = BlankRelatedFieldModel
|
||||||
|
|
||||||
|
self.inline_serializer_class = BlankInlineRelatedFieldModelSerializer
|
||||||
|
self.serializer_class = BlankRelatedFieldModelSerializer
|
||||||
|
self.data = {'blank_field': None}
|
||||||
|
|
||||||
|
def test_create_inline_blank_related_field(self):
|
||||||
|
serializer = self.inline_serializer_class(self.data)
|
||||||
|
self.assertEquals(serializer.is_valid(), True)
|
||||||
|
|
||||||
|
def test_create_blank_related_field(self):
|
||||||
|
serializer = self.serializer_class(self.data)
|
||||||
|
self.assertEquals(serializer.is_valid(), True)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user