在HyperlinkedModelSerializer
中使用url
时,无法返回它
# 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",
)
查询curl -X GET http://localhost/api/promotion/2/
时收到的JSON输出:
{"id":2,"name":"My promotion"}
如果我使用reverse
检查HyperlinkedRelatedField
中的view_name
是否存在,它将打印正确的URL
我的问题是:url
为什么没有出现在响应中?它适用于我的所有其他视图(将代码与有效的类进行比较没有帮助)。阅读DRF文档,但我没有看到任何新内容(使用版本3.11.0)
要获取当前对象的url表示,应使用HyperlinkedIdentityField
相关问题 更多 >
编程相关推荐