Вложенные представления в Rest Framework - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть приложение API отдыха с пользователями и книгами с этой структурой URL (без маршрутизаторов):

urlpatterns = [
    path('', UserList.as_view(), name="user-list"),
    path('<uuid:id>/', UserDetail.as_view(), name="user-detail"),
    path('<uuid:id>/books/', BookList.as_view(), name="book-list"),
    path('<uuid:id>/books/<int:book_id>/', BookDetail.as_view(), name="book-detail"),
]

Сериализаторы:

class UserSerializer(serializers.HyperlinkedModelSerializer):
    books = serializers.HyperlinkedRelatedField(
        many = True,
        queryset = Book.objects.all(),
        view_name = "book-detail",
    )

И общие представления:

class BookList(generics.ListAPIView):
    serializer_class = BookSerializer
    queryset = Book.objects.all()
    lookup_field = 'book_id'


class BookDetail(generics.RetrieveAPIView):
    serializer_class = BookSerializer
    queryset = Book.objects.all()
    lookup_field = 'book_id'

Это не работает - я получаю сообщение об ошибке:

Could not resolve URL for hyperlinked relationship using view name "book-detail"

Я пытался изменить lookup_field и view-name, но я даже не уверен, как решить эту проблему.

Я посмотрел на drf-nested-router, но я надеюсь найти решение без переключения на маршрутизаторы, если это вообще возможно.

Обновление:

I 'используя book_id в качестве моего первичного ключа в модели:

class Book(models.Model):
    book_id = models.AutoField(primary_key=True)
    owner = models.ForeignKey('users.ColossusUser', related_name="books", on_delete=models.CASCADE)
...