Как фильтровать по URL сериализатор, когда он вложен в другой сериализатор в Django?

Я создаю API, который имеет вложенные данные, как на картинке enter image description here. Теперь как искать вложенные данные в 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(viewsets.ModelViewSet):
    queryset = Robot.objects.all()
    serializer_class = RobotSerializer
    filter_backends = [filters.DjangoFilterBackend]
    filterset_fields = ['robot', 'JenkinJobName__jenkinsBuildNumber']
    authentication_classes = [BasicAuthentication]
    permission_classes = [IsAuthenticated]

В URL API, если я хочу найти определенного робота, то используя этот URL URL/?robot=robotname я могу найти этого конкретного робота. Но как я могу искать конкретные вложенные данные с помощью URL?

Используя мое представление, я получаю фильтры поиска следующим образомenter image description here

Но это не выполняет никакого поиска. как добиться такого поиска и что не так с моим кодом, может кто-нибудь помочь мне? На самом деле, когда я ищу вложенный сериализатор, только искомое значение должно присутствовать в списке, остальные должны исчезнуть.

Возможно, вам нужно переписать ваш метод list в вашем представлении, здесь это то, как на самом деле работает, вы можете добавить то, что вы хотите фильтровать или, возможно, вам нужно будет переписать ваш queryset в зависимости от параметров, которые вы хотите.

Вернуться на верх