Django Viewset подробно поддерживает только с pk?не аргументы? - PullRequest
0 голосов
/ 04 марта 2019

Мое представление ACTION не работает.

Как передать аргументы не только ПК?


Я использовал функцию на основеapi like

Функциональное представление API (1)

{host}:{port}/api/food/<year>/<month>/<day>/


Теперь у меня есть новый набор настроек для модели Еда .

ViewSet (2)

{host}:{port}/food/


Я надеюсь интегрировать этот API в один ModelViewSet, так что я сделал, как показано ниже.

ЧТО Я ХОЧУ (1) + (2)

{host}:{port}/food/files/<year>/<month>/<day>/
{host}:{port}/food/


Мой код

class FoodViewSet(viewsets.ModelViewSet):
    queryset = Food.objects.all()
    permission_classes = [blahblah]
    authentication_classes = [blahblah]

    def list(self, request, *args, **kwargs):
        ...
        return Response(blahblah)

    def create(self, request, *args, **kwargs):
        ...
        return Response(blahblah)

    @action(['GET'], detail=True)
    def files(self, request, year, month, day):
        ...
        return Response(blahblah)

1 Ответ

0 голосов
/ 04 марта 2019

Извините, я очищаю эту проблему с URL-адресом запроса, как показано ниже.

URL

{host}:{port}/food/files/?year=2019&month=02&day=27

МОЙ КОД

@action(['GET'], detail=False)
def files(self, request):
    year = request.query_params.get('year')
    month = request.query_params.get('month')
    day = request.query_params.get('day')
...