Я хочу сделать возможным в json который отдает все экземпляры модели переходить на конкретный экземпляр использую дополнительное поле url в сериализаторе.
есть вьюха для отображения списка
class DocumentsListView(viewsets.ViewSetMixin, generics.ListCreateAPIView):
user = serializers.PrimaryKeyRelatedField(read_only=True,)
queryset = Documents.objects.all()
serializer_class = DocumentsSerializer
permission_classes = []
def perform_create(self, serializer):
serializer.save(author=self.request.user)
urls.pyrouter = DefaultRouter()
router.register('', DocumentsListView)
urlpatterns = [
url('', include(router.urls), name='files')
]
Теперь я добавляю в serializer.py поле url
class DocumentsSerializer(serializers.ModelSerializer):
url = serializers.HyperlinkedRelatedField(view_name='document-detail')
class Meta:
model = Documents
fields = ('id', 'filename', 'datafile', 'type', 'created', 'url')
это поле требует аргумента
view_name
я добавляю во вьюху вывод экземпляра
class DocumentDetailView(viewsets.ViewSetMixin, generics.RetrieveAPIView):
queryset = Documents.objects.all()
serializer_class = DocumentsSerializer
permission_classes = []
и в url добавил
router.register('', DocumentDetailView, 'document-detail')
Получаю
AssertionError: Relational field must provide a `queryset` argument, override `get_queryset`, or set read_only=`True`.
Если ставлю read_only=`True`, то ошибок нет но и url не отображается.
Может я вообще неправильно реализую? Нужен ли мне вообще DocumentDetailView ?