mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-07-28 08:59:54 +03:00
Allow serializer data to include related objects by object
When instantiating a serializer from cleaned data, the relational fields have been already converted into objects, which makes the fields invalid. Having a valid object as the value of a field should be considered valid, even if not in the prescribed format. As such, this change adds a check to allow objects of the model type in lieu of the proper representation.
This commit is contained in:
parent
4a98533746
commit
d5f895f6c0
|
@ -250,6 +250,10 @@ class PrimaryKeyRelatedField(RelatedField):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def to_internal_value(self, data):
|
def to_internal_value(self, data):
|
||||||
|
|
||||||
|
if isinstance(data, self.get_queryset().model):
|
||||||
|
return data
|
||||||
|
|
||||||
if self.pk_field is not None:
|
if self.pk_field is not None:
|
||||||
data = self.pk_field.to_internal_value(data)
|
data = self.pk_field.to_internal_value(data)
|
||||||
try:
|
try:
|
||||||
|
@ -331,6 +335,10 @@ class HyperlinkedRelatedField(RelatedField):
|
||||||
return self.reverse(view_name, kwargs=kwargs, request=request, format=format)
|
return self.reverse(view_name, kwargs=kwargs, request=request, format=format)
|
||||||
|
|
||||||
def to_internal_value(self, data):
|
def to_internal_value(self, data):
|
||||||
|
|
||||||
|
if isinstance(data, self.get_queryset().model):
|
||||||
|
return data
|
||||||
|
|
||||||
request = self.context.get('request', None)
|
request = self.context.get('request', None)
|
||||||
try:
|
try:
|
||||||
http_prefix = data.startswith(('http:', 'https:'))
|
http_prefix = data.startswith(('http:', 'https:'))
|
||||||
|
|
Loading…
Reference in New Issue
Block a user