【问题标题】:How to get data by status field in django rest framework如何在 django rest 框架中通过状态字段获取数据
【发布时间】:2021-01-27 11:05:05
【问题描述】:

实际上我正在做一个项目。我想通过状态字段而不是通过在 Django 休息框架的 models.py 中创建的 id 获取数据。 这是我的源代码
Models.py 文件

class employee(models.Model):
    name = models.CharField(max_length=50)
    salary = models.IntegerField()
    phone = models.CharField(max_length=20)
    address = models.CharField(max_length=250)
    status = models.CharField(max_length=20)

Views.py 文件

class employeeviewset(viewsets.ModelViewSet):
   queryset = models.employee.objects.all()
   serializer_class = serializers.employeeserializer
class employeebystatus(viewsets.ModelViewSet):
   def get(self, request, status):
       employee = models.employee.objects.filter(status=status)
       if employee:
           serializer = serializers.employeeserializer(employee, many=True)
           return Response(status=200, data=serializer.data)
       return Response(status=400, data={'Employee Not Found'})

Urls.py文件

router = routers.DefaultRouter()
router.register('employee/<status>/', employeeviewset)

如何使用查询按状态字段获取数据,谁能告诉我答案

【问题讨论】:

    标签: python django django-rest-framework rest


    【解决方案1】:

    如果我正确理解您的问题,您正试图通过基于状态而不是 user_id 过滤来让您的视图返回 Employee 模型的实例。如果这是正确的,您应该能够将您的 urls.py 文件更新为:

    router = routers.DefaultRouter()
    router.register('employee/', employeeviewset)
    router.register('employee/<status>', employeebystatus)
    

    【讨论】:

    • 它将引发错误 AssertionError: basename 参数未指定,并且无法从视图集中自动确定名称,因为它没有 .queryset 属性。
    • 您是否尝试过提供基本名称参数或添加查询集属性?
    【解决方案2】:

    根据用户从 url 路径请求获取特定数据的查询

    ModelName.objects.get(ColumnName="status")
    

    你也可以试试

    
    class StatusAPIView(APIView):
    
        def get(self,request):
            XYZ = ModelName.objects.get(ColumnName="status")
            serializer = YourSerializeNAme(XYZ,many=True)
            return Response(serializer.data)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-13
      • 2018-05-16
      • 2021-05-26
      • 2018-08-10
      • 2021-09-02
      • 1970-01-01
      相关资源
      最近更新 更多