mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-05 04:50:12 +03:00
Merge 2cb2cc7f9b
into 99382f3ccb
This commit is contained in:
commit
de6d1c208f
|
@ -296,10 +296,18 @@ class HyperlinkedRelatedField(RelatedField):
|
||||||
Takes the matched URL conf arguments, and should return an
|
Takes the matched URL conf arguments, and should return an
|
||||||
object instance, or raise an `ObjectDoesNotExist` exception.
|
object instance, or raise an `ObjectDoesNotExist` exception.
|
||||||
"""
|
"""
|
||||||
lookup_value = view_kwargs[self.lookup_url_kwarg]
|
lookup_kwargs = self.get_object_kwargs(view_name, view_args, view_kwargs)
|
||||||
lookup_kwargs = {self.lookup_field: lookup_value}
|
|
||||||
return self.get_queryset().get(**lookup_kwargs)
|
return self.get_queryset().get(**lookup_kwargs)
|
||||||
|
|
||||||
|
def get_object_kwargs(self, view_name, view_args, view_kwargs):
|
||||||
|
"""
|
||||||
|
Get default kwargs for looking up an object.
|
||||||
|
|
||||||
|
Separate for subclassing purposes.
|
||||||
|
"""
|
||||||
|
lookup_value = view_kwargs[self.lookup_url_kwarg]
|
||||||
|
return {self.lookup_field: lookup_value}
|
||||||
|
|
||||||
def get_url(self, obj, view_name, request, format):
|
def get_url(self, obj, view_name, request, format):
|
||||||
"""
|
"""
|
||||||
Given an object, return the URL that hyperlinks to the object.
|
Given an object, return the URL that hyperlinks to the object.
|
||||||
|
@ -311,10 +319,18 @@ class HyperlinkedRelatedField(RelatedField):
|
||||||
if hasattr(obj, 'pk') and obj.pk in (None, ''):
|
if hasattr(obj, 'pk') and obj.pk in (None, ''):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
lookup_value = getattr(obj, self.lookup_field)
|
kwargs = self.get_url_kwargs(obj, view_name, request, format)
|
||||||
kwargs = {self.lookup_url_kwarg: lookup_value}
|
|
||||||
return self.reverse(view_name, kwargs=kwargs, request=request, format=format)
|
return self.reverse(view_name, kwargs=kwargs, request=request, format=format)
|
||||||
|
|
||||||
|
def get_url_kwargs(self, obj, view_name, request, format):
|
||||||
|
"""
|
||||||
|
Get default kwargs for creating the object's URL.
|
||||||
|
|
||||||
|
Separate for subclassing purposes.
|
||||||
|
"""
|
||||||
|
lookup_value = getattr(obj, self.lookup_field)
|
||||||
|
return {self.lookup_url_kwarg: lookup_value}
|
||||||
|
|
||||||
def to_internal_value(self, data):
|
def to_internal_value(self, data):
|
||||||
request = self.context.get('request', None)
|
request = self.context.get('request', None)
|
||||||
try:
|
try:
|
||||||
|
|
Loading…
Reference in New Issue
Block a user