简体   繁体   中英

Multiple view set into router Django rest framework

I have a problem with DRF I have a model

from django.contrib.sites.models import Site

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

I want to create a viewset and serializer and I want to get the specific url:

/api/sites/{pk}/persons/

And get all persons that They have associate site Or

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

How can I do?

Try this

# 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']))



router config will be as

from rest_framework.routers import DefaultRouter

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM