В моем коде Django у меня есть класс Profile, который в основном расширяет AbstractUser. Я хотел, чтобы в подробном представлении для этого пользователя использовалось имя пользователя вместо идентификатора пользователя, и это на самом деле работает отлично.
В моем urls.py у меня есть url(r'^profile/view/(?P<username>[\w.@+-]+)/$', ProfileDetail.as_view(), name="profile-detail")
, и мой класс ProfileDetail выглядит так:
class ProfileDetail(generics.RetrieveUpdateDestroyAPIView):
serializer_class = ProfileSerializer
queryset = Profile.objects.all()
lookup_field = 'username'
сопровождается этой строкой в моем сериализаторе профиля: url = serializers.HyperlinkedIdentityField(view_name='profile-detail', lookup_field='username')
.
Все это прекрасно работает. Проблема заключается в том, что я пытаюсь просмотреть все «свайпы» моего пользователя. Мой класс Swipe имеет отношение внешнего ключа с моим классом Profile (и related_name='swipes'
в этом внешнем ключе).
Я добавил это в urls.py: url(r'^profile/view/(?P<username>[\w.@+-]+)/swipes/$', ProfileSwipesList.as_view(), name="swipe-detail")
, где мой класс ProfileSwipesList выглядит так:
class ProfileSwipesList(generics.ListAPIView):
serializer_class = SwipeSerializer
def get_queryset(self, *args, **kwargs):
return Swipe.objects.filter(user = Profile.objects.get(username=self.kwargs['username']))
Я проверил, что набор запросов возвращает правильную вещь, набор запросов объектов Swipe. В моем сериализаторе Swipe я попытался добавить строку, аналогичную той, которую я добавил в сериализаторе своего профиля: url = serializers.HyperlinkedIdentityField(view_name='swipe-detail')
.
Однако, когда я пытаюсь получить доступ к этому URL, я получаю эту ошибку:
Не удалось разрешить URL-адрес для связи с гиперссылкой, используя имя представления «swipe-detail». Возможно, вам не удалось включить связанную модель в ваш API или неправильно настроен атрибут lookup_field
в этом поле.
Я новичок в Django, так что извините, если решение для этого очевидно, но я был бы признателен за любую помощь в том, как заставить это представление правильно отображать набор запросов, который я возвращаю из представления списка.