Есть набор конечных точек API, сгенерированных по умолчанию Django Rest Framework. Пример этого:Добавить еще один аргумент для маршрута для DRF
^api/^^provinces/(?P<pk>[^/.]+)/$ [name='province-detail']
производит http://127.0.0.1:8000/api/provinces/02/
, что хорошо. Он использует фактический код ниже:
class ProvinceSerializer(serializers.ModelSerializer):
""" Serializer to represent the Province model """
class Meta:
model = Province
fields = ("name", "code")
Я хочу добавить еще один маршрут, так что я могу иметь другую конечную точку, например:
^api/^^provinces/(?P<pk>[^/.]+)/(?P<product>[^/.]+)/$ [name='province-product-detail']
Так что я могу сделать, как этот http://127.0.0.1:8000/api/provinces/02/apple/
и получить доступ к второй аргумент в методе сериализатора. Я пытаюсь сделать так:
class ProvinceSerializer(serializers.ModelSerializer):
""" Serializer to represent the Province model """
class Meta:
model = Province
fields = ("name", "code")
@detail_route(methods=['post'])
def set_product(self, request, product=None):
return product
Я думаю, что важнее, чем сериализатор - это Представления. Можете ли вы опубликовать свои мнения? – jarussi