当序列化程序嵌套在 Django 中的另一个序列化程序中时,如何在 URL 中过滤该序列化程序?

利图帕纳达斯

我正在创建一个具有嵌套数据的 API,如图片中所示,请在此处输入图片描述

现在如何在 URL 中搜索嵌套数据,这是我的模型

class Robot(models.Model):
    robot = models.CharField(max_length=100)
    short_Description = models.CharField(max_length=200)
    status = models.CharField(max_length=20)
    parameter = models.CharField(max_length=200)
    jenkins_job = models.CharField(max_length=100, default='JenkinsJobName')
    jenkins_token = models.CharField(max_length=100, default='JenkinsToken')
    def __str__(self):
        return self.robot

class assignParameter(models.Model): 
    parameterName = models.CharField(max_length=100, blank=True)
    assignRobot= models.ForeignKey(Robot, on_delete=models.CASCADE, related_name='param', blank=True, null=True)

这是我的 serializer.py

from .models import Robot,assignParameter
from rest_framework import serializers

class assignParameterSerializer(serializers.ModelSerializer):
    class Meta: 
        model = assignParameter
        fields = ['id', 'parameterName', 'assignRobot']


class RobotSerializer(serializers.ModelSerializer):
    param = assignParameterSerializer(many=True, read_only=True)
    JenkinJobName = jenkinsHistorySerializer(many=True, read_only=True)
    class Meta: 
        model = Robot
        fields = ['id', 'robot', 'short_Description', 'status', 'parameter', 'jenkins_job', 'jenkins_token', 'param']

这是我对 api 的看法

class RobotViewSet(mixins.ListModelMixin,GenericViewSet):
    queryset = Robot.objects.all()
    serializer_class = RobotSerializer
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ['robot']
    authentication_classes = [BasicAuthentication]
    permission_classes = [IsAuthenticated]

在 api url 中,如果我想搜索特定的机器人,然后使用这个 url url/?robot=robotname我可以搜索那个特定的机器人。但是如何使用 URL 搜索特定的嵌套数据?

阿明

使用django-filter

视图.py

from django_filters import rest_framework as filters

...
filter_backends = (filters.DjangoFilterBackend,)
filterset_fields = ['param__parameterName']

您可以filterset_fields = ['param__parameterName']用于过滤机器人的参数名称

例如 url/?param__parameterName='sth' 将过滤具有名称为 'sth' 的参数的机器人

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Django REST框架序列化程序中的完整URL

嵌套序列化程序中的Django Rest Framework自定义URL

将另一个类添加到 Django 中的序列化程序

序列化程序中的 Django DRF 过滤字段

Django访问序列化程序中的嵌套对象字段

Django 嵌套序列化程序

Django序列化程序Imagefield获取完整的URL

Django:如何在嵌套序列化程序中更改字段名称

如何在 django rest 框架中为嵌套序列化程序正确创建 POST 方法

如何在Django Rest Framework中设置双嵌套序列化程序

如何使注释序列化程序与Django rest框架中的后期序列化程序一起工作?

如何在Django Rest Framework中的一个序列化程序中更新两个模型?

用于 Django 嵌套子字段的嵌套序列化程序

Django REST Framework:嵌套序列化程序未序列化

在序列化 Django 中过滤数据

如何使用序列化程序以嵌套方式从 django 模型中检索数据?

Django Rest Framework序列化程序中的循环依赖

覆盖Django RF中的序列化程序删除方法

序列化程序,Django rest框架中的权限检查,

获取序列化程序django中的外键字段

编辑序列化程序 Django Rest 中的属性值

Django 序列化程序中的反向外鍵

序列化程序中的更新:django rest 框架

序列化程序 django rest 中的补丁

在 Django 序列化程序响应中,如何摆脱 FileField 的绝对路径(media_url 前缀)?

Django 休息嵌套序列化程序失败

Django Rest-Framework嵌套序列化程序顺序

带有嵌套序列化程序的 Django 视图

Django 在嵌套序列化程序中发布