Множественное представление в роутер Django - PullRequest
0 голосов
/ 11 октября 2018

У меня проблема с DRF. У меня есть модель

from django.contrib.sites.models import Site

class Person(models.Model):
    site = ForeignKey(Site, on_delete=models.CASCADE)

. Я хочу создать набор параметров и сериализатор и получить конкретный URL:

/api/sites/{pk}/persons/

И получитьУ всех лиц, у которых у них есть сайт, связанный или

/api/sites/{pk}/persons/{pk}

Как я могу это сделать?

1 Ответ

0 голосов
/ 12 октября 2018

Попробуйте это

# serializers.py
from rest_framework import serializers


class PersonSerializer(serializers.ModelSerializer):
    class Meta:
        fields = '__all__'
        model = Person


# views.py
from rest_framework.viewsets import ModelViewSet


class PersonViewset(ModelViewSet):
    serializer_class = PersonSerializer

    def get_queryset(self):
        return Person.objects.filter(site_id=int(self.kwargs['site_id']))



Конфигурация маршрутизатора будет выглядеть как

from rest_framework.routers import DefaultRouter

router = DefaultRouter()
router.register(r'/api/sites/<site_id>/persons', views.PersonViewset)
...