当前位置: 首页 > 知识库问答 >
问题:

Django REST框架-针对查询参数进行筛选

唐增
2023-03-14

所以我使用REST框架创建了我的“API”,现在尝试为它做过滤。这就是我的models.py的样子:

class Airline(models.Model):
    name = models.TextField()

class Workspace(models.Model):
    airline = models.ForeignKey(Airline)
    name = models.CharField(max_length=100)

class Passenger(models.Model):
    workspace = models.ForeignKey(Workspace)
    title = models.CharField(max_length=200)

因此,我希望在我的JSON文件中看到“所有乘客在特别工作空间”或“所有乘客在特别航空公司”等。

class AirlineSerializer(serializers.ModelSerializer):
    class Meta:
        model = Airline


class WorkspaceSerializer(serializers.ModelSerializer):
    class Meta:
        model = Workspace


class PassengerSerializer(serializers.ModelSerializer):
    class Meta:
        model = Passenger
class AirlineList(generics.ListCreateAPIView):
    model = Airline
    serializer_class = AirlineSerializer


class AirlineDetail(generics.RetrieveUpdateDestroyAPIView):
    model = Airline
    serializer_class = AirlineSerializer


class WorkspaceList(generics.ListCreateAPIView):
    model = Workspace
    serializer_class = WorkspaceSerializer


class WorkspaceDetail(generics.RetrieveUpdateDestroyAPIView):
    model = Workspace
    serializer_class = WorkspaceSerializer


class PassengerList(generics.ListCreateAPIView):
    model = Passenger
    serializer_class = PassengerSerializer


class PassengerDetail(generics.RetrieveUpdateDestroyAPIView):
    model = Passenger
    serializer_class = PassengerSerializer

根据查询参数进行筛选:http://www.django-rest-framework.org/api-guide/Filtering/#filtering-ats-query-parameters

不能真的得到它..

共有1个答案

丘智志
2023-03-14

使用@limelights,我设法做了我想做的事情,下面是代码

class PassengerList(generics.ListCreateAPIView):
    model = Passenger
    serializer_class = PassengerSerializer

    # Show all of the PASSENGERS in particular WORKSPACE
    # or all of the PASSENGERS in particular AIRLINE
    def get_queryset(self):
        queryset = Passenger.objects.all()
        workspace = self.request.query_params.get('workspace')
        airline = self.request.query_params.get('airline')

        if workspace:
            queryset = queryset.filter(workspace_id=workspace)
        elif airline:
            queryset = queryset.filter(workspace__airline_id=airline)

        return queryset
 类似资料:
  • 我将Django REST框架工具包与Django1.11一起使用,并尝试根据URL过滤结果。以下是我的设置: models.py: 我希望通过我的包模型的name字段来过滤结果,而不是使用以下内容: 我怎么才能做到这一点呢?

  • 本文向大家介绍在Java的Hibernate框架中对数据库数据进行查询操作,包括了在Java的Hibernate框架中对数据库数据进行查询操作的使用技巧和注意事项,需要的朋友参考一下 Hibernate查询语言(HQL)是一种面向对象的查询语言,类似于SQL,但不是对表和列操作,HQL适用于持久对象和它们的属性。 HQL查询由Hibernate转换成传统的SQL查询,这在圈上的数据库执行操作。 虽

  • 问题内容: 我有下面的代码(我包括了我认为所有相关的部分): 运行此命令时,在添加第一个参数时会收到IndexOutOfBoundsException。我做错了什么? 问题答案: 尝试以下方法:

  • 我正在努力理解的行为。我想用它来编码查询参数中的URL,但它似乎只转义字符,而不转义其他必要的字符,如。 查询参数中根本没有编码的URL示例: 输出: 这是不正确的,因为未编码的会导致被解释为而不是的查询参数。 但是,如果使用包含字符的输入:: 输出: 字符被转义。 自动转义字符,但不转义其他保留字符,这似乎不一致。 使用将URL编码为查询参数的正确过程是什么?

  • 本文向大家介绍Java的MyBatis框架中对数据库进行动态SQL查询的教程,包括了Java的MyBatis框架中对数据库进行动态SQL查询的教程的使用技巧和注意事项,需要的朋友参考一下 其实MyBatis具有的一个强大的特性之一通常是它的动态 SQL 能力。 如果你有使用 JDBC 或其他 相似框架的经验,你就明白要动态的串联 SQL 字符串在一起是十分纠结的,确保不能忘了空格或在列表的最后省略

  • 问题内容: 我正在尝试使用JDK java.net.URI构建URI 。 我想附加一个绝对URI对象,一个查询(在String中)。例如: 理论(或我的想法)是决心应该返回: 但是我得到的是: 为什么#resolve() “吃掉”最后一条路?如果新的URI()构建为: 效果很好。 问题答案: 我想回应一下自己。Javadoc确实可以正确解释。如URI#resolve()所述,在第3.b节中: 否则