Open
Description
Привет, перепробовал кучу вещей в инете для nested drf routing, остановился на твоем пакете.
У тебя отсутствует генератор полей-ссылок на nested-urls (у базового не хватает kwargs для reverse).
class HyperlinkedNestedIdentityField(HyperlinkedIdentityField):
def __init__(self, view_name=None, additional_reverse_kwargs={}, **kwargs):
self.additional_reverse_kwargs = additional_reverse_kwargs
super(HyperlinkedNestedIdentityField, self).__init__(view_name, **kwargs)
def get_url(self, obj, view_name, request, format):
"""
Given an object, return the URL that hyperlinks to the object.
May raise a `NoReverseMatch` if the `view_name` and `lookup_field`
attributes are not configured to correctly match the URL conf.
"""
# Unsaved objects will not yet have a valid URL.
if obj.pk is None:
return None
kwargs = {}
for k, v in self.additional_reverse_kwargs.iteritems():
kwargs[k] = getattr(obj, v, v)
kwargs.update({self.lookup_url_kwarg: getattr(obj, self.lookup_field)})
return self.reverse(view_name, kwargs=kwargs, request=request, format=format)
Пример использования:
class MealRecordSerializer(serializers.HyperlinkedModelSerializer):
url = HyperlinkedNestedIdentityField(view_name='mealrecord-detail', read_only=True,
additional_reverse_kwargs={"parent_lookup_user_id": "user_id"})
class Meta:
model = MealRecord
fields = ('id', 'url', 'user', 'date', 'time', 'title', 'calories_count')