J'essaie de construire une API REST Django basée sur une classe qui prend en compte les données de la requête POST et génère les données correspondantes.Comment configurer un REST DJANGO nécessitant des informations à partir d'une requête POST?
J'ai une liste des bâtiments dans le DB
State Building
California Golden Gate Bridge
New York Empire State
California TransAmerica
New York Brooklyn Bridge
utilisateur fournira l'état par une demande POST (c.-à-Californie), l'API devrait renvoyer le bâtiment approprié (c.-à-Golden Gate Bridge, TransAmerica)
Je suppose que j'ai juste du mal à comprendre comment la classe prend le request.data ['state_id']. Dois-je utiliser APIView? Tant de questions!
Jusqu'à présent, je ceci dans ma view.py
class BuildingViewSet(viewsets.ModelViewSet):
queryset = BuildingRule.objects.values('building_name').distinct()
serializer_class = BuildingSerializer
def post(self, request, *args, **kwargs):
queryset = BuildingRule.objects.filter(state_name=request.data['state_id'])
return Response(queryset.values_list('building_name', flat=True))
Ceci est mon serializer.py
class BuildingSerializer(serializers.ModelSerializer):
class Meta:
model = BuildingRule
fields = ('building_name',)
Ceci est mon url.py:
router.register(r'buildings', views.BuildingsViewSet, base_name='Building')
override créer la méthode dans votre viewset .... suivez ce lien https://stackoverflow.com/questions/40999386/custom-function-which-performs-create-and-update-on-drf-modelviewset – amrit
Créer une méthode dans le Viewset n'est pas la bonne façon de le faire. Avec DRF et un Serializer, utilisez simplement l'attribut 'required' sur un Field comme je l'ai décrit dans ma réponse. –