Так что я довольно прямо вперед сериализатору в serializers.py
Джанго 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
})
И это связано Viewset в viewsets.py
class ScheduleViewSet(viewsets.ReadOnlyModelViewSet):
queryset = FrozenSchedule.objects.not_abandoned().future()\
.filter(signed=False).order_by('start_date')
serializer_class = serializers.ScheduleSerializer
It возвращает JSON, который выглядит li ка это:
[
{
"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-адрес таким образом внутри мой Serializer?
В остальной документации указано, что функция rest_framework reverse
выполняет именно то, что мне нужно. Но для этого требуется объект запроса для сборки UR http://www.django-rest-framework.org/api-guide/reverse/
показать нам свой ПОЛУЧИТЬ абсолютный метод URL-адрес от модели – sebb
Вы можете попробовать с 'HyperlinkedIdentityField'? –
Я считаю, что мне нужно указать имя моего вида, например 'url = serializers.HyperlinkedIdentityField (view_name = 'reports: frozenschedule-detail', lookup_field = {'pk': ...})', но как указать поля поиска ? –