1
所以我在serializers.py
Django的Restul返回絕對URL的
class ScheduleSerializer(serializers.ModelSerializer):
class Meta:
model = FrozenSchedule
fields = ['startDate', 'endDate', 'client', 'url']
startDate = serializers.DateField(source='start_date')
endDate = serializers.DateField(source='end_date')
client = serializers.StringRelatedField(many=False)
url = serializers.URLField(source='get_absolute_url')
get_absolute_url
一個相當簡單的串在我的models.py
def get_absolute_url(self):
return reverse('reports:frozenschedule-detail', kwargs={
'slug': self.client.slug, 'pk': self.id
})
而且它的相關視圖集中在viewsets.py
class ScheduleViewSet(viewsets.ReadOnlyModelViewSet):
queryset = FrozenSchedule.objects.not_abandoned().future()\
.filter(signed=False).order_by('start_date')
serializer_class = serializers.ScheduleSerializer
它返回看起來像li的JSON柯本:
[
{
"startDate": "2016-10-01",
"endDate": null,
"client": "Abscissa.Com Limited",
"url": "/clients/abscissac/frozenschedule/1",
}
]
但我想它返回完整URL,而不僅僅是相對路徑
[
{
"startDate": "2016-10-01",
"endDate": null,
"client": "Abscissa.Com Limited",
"url": "http://localhost:8000/clients/abscissac/frozenschedule/1",
}
]
我可以序列我的串行內部URL的這種方式?
Restful文檔指出rest_framework reverse
函數完全符合我的需要。但它要求請求對象構建UR http://www.django-rest-framework.org/api-guide/reverse/
我們展示了從模型 – sebb
您得到絕對的URL方法,你可以嘗試用'HyperlinkedIdentityField'? –
我認爲我需要tp指定我的視圖名稱像'url = serializers.HyperlinkedIdentityField(view_name ='reports:frozenschedule-detail',lookup_field = {'pk':...})'但我該如何指定查找字段? –