Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 我可以在RetrieveAPIView中使用另一个模型的pk吗。这种做法不好吗?_Django_Python 3.x_Django Rest Framework - Fatal编程技术网

Django 我可以在RetrieveAPIView中使用另一个模型的pk吗。这种做法不好吗?

Django 我可以在RetrieveAPIView中使用另一个模型的pk吗。这种做法不好吗?,django,python-3.x,django-rest-framework,Django,Python 3.x,Django Rest Framework,我正在开发一个RetrieveAPIView api,在这个api中,我希望传递学院id,它将返回当前在那里学习的所有学生,但我使用的是学生模型的Modelserializer。代码在大学应用程序中。我有麻烦了这是个坏习惯吗 my URL.py: from django.urls import path from student.views import StudentView path('studentdetails/<int:college_id>/', views.Stude

我正在开发一个RetrieveAPIView api,在这个api中,我希望传递学院id,它将返回当前在那里学习的所有学生,但我使用的是学生模型的Modelserializer。代码在大学应用程序中。我有麻烦了这是个坏习惯吗

my URL.py:

from django.urls import path
from student.views import StudentView

path('studentdetails/<int:college_id>/', views.StudentView.as_view())
我的观点

from rest_framework.generics import RetrieveAPIView
from rest_framework import serializers
from student.serializer import StudentSerializer
from student.models import Student
from .models import College 

class StudentView(RetrieveAPIView):
    queryset = Student.objects.all()
    serializer_class = StudentSerializer

    def get(self, request, *args, **kwargs):
        try:
            college_id=College.objects.get(id=self.kwargs.get('college_id'))
            data=myfunction(id=college_id)
            response_data=self.get_serializer(data, many=True)
            return Response({"data": response_data.data})
         except College.DoesNotExist:
             raise serializers.ValidationError(_("College Does Not exists"))

RetrieveAppView用于只读端点以表示单个模型实例

因此,请尝试使用用户ListAPIView

试试这个

假设您在学生模型中有大学外键

from rest_framework import generics

class StudentView(generics.ListAPIView):

   queryset = Student.objects.all()
   serializer_class = StudentSerializer

   def get(self, request, *args, **kwargs):
        try:
            college_id=College.objects.get(id=self.kwargs.get('college_id'))
            students = self.queryset.filter(college=college_id)
            response_data=self.get_serializer(students, many=True)
            return Response(
               {
                 "data": response_data.data
               }
           )

         except College.DoesNotExist:
             raise serializers.ValidationError(_("College Does Not exists"))

希望它有助于

检索用于只读端点表示单个模型实例的PiView

因此,请尝试使用用户ListAPIView

试试这个

假设您在学生模型中有大学外键

from rest_framework import generics

class StudentView(generics.ListAPIView):

   queryset = Student.objects.all()
   serializer_class = StudentSerializer

   def get(self, request, *args, **kwargs):
        try:
            college_id=College.objects.get(id=self.kwargs.get('college_id'))
            students = self.queryset.filter(college=college_id)
            response_data=self.get_serializer(students, many=True)
            return Response(
               {
                 "data": response_data.data
               }
           )

         except College.DoesNotExist:
             raise serializers.ValidationError(_("College Does Not exists"))

希望它能帮助您使用ListAPIView而不是RetrieveAPIView并使用筛选。更改get_queryset方法或添加自己的筛选器


使用ListAPIView而不是RetrieveAPIView并使用筛选。更改get_queryset方法或添加自己的筛选器


RetrieveAppView应该只返回一个结果,否则会引发错误。我建议在您的案例中使用一个过滤器。您可以使用
ListAPIView
。@JPG过滤器在哪里?或者我应该使用ListAPIView吗?
RetrieveAPIView
应该只返回一个结果,否则会引发错误。我建议在您的案例中使用一个过滤器。您可以使用
ListAPIView
。@JPG过滤器在哪里?还是应该使用ListAPIView?