You should set lookup_field
in your serializer:
class ItemSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Item
fields = ('url', 'slug', 'title', 'item_url')
lookup_field = 'slug'
extra_kwargs = {
'url': {'lookup_field': 'slug'}
}
and in your view:
class ItemViewSet(viewsets.ModelViewSet):
queryset = Item.objects.all()
serializer_class = ItemSerializer
lookup_field = 'slug'
I got this result:
~ curl http://127.0.0.1:8000/items/testslug/ | python -mjson.tool
{
"item_url": "https://example.com/",
"slug": "testslug",
"title": "Test Title",
"url": "http://127.0.0.1:8000/items/testslug/"
}