Я не могу получить url
для возврата при использовании его в HyperlinkedModelSerializer
.
# models.py
class Promotion(TimeStampedMixin, models.Model):
name = models.CharField(max_length=300)
# ...
# views.py
class PromotionViewSet(viewsets.ModelViewSet):
serializer_class = PromotionSerializer
queryset = Promotion.objects.all()
def retrieve(self, request, *args, **kwargs):
instance = self.get_object()
serializer = self.get_serializer(instance, context={'request': request})
return Response(serializer.data)
# serializers.py
class PromotionSerializer(serializers.HyperlinkedModelSerializer):
url = serializers.HyperlinkedRelatedField(
view_name="campaigns:promotion-detail", read_only=True
)
class Meta:
model = Promotion
fields = (
"url",
"id",
"name",
)
Вывод JSON, который я получаю при запросе curl -X GET http://localhost/api/promotion/2/
:
{"id":2,"name":"My promotion"}
Если я использую reverse
, чтобы проверить, существует ли view_name
в HyperlinkedRelatedField
, он печатает правильный URL-адрес.
Мой вопрос: почему не отображается url
в ответ? Это работает для любых других моих представлений (сравнение кода с классами, которые работают, не помогло). Прочитайте документацию по DRF, но я не вижу ничего нового (используется версия 3.11.0)