首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何通过父对象的属性过滤嵌套数据,使用Django Rest框架视图集

在Django Rest框架视图集中,可以通过父对象的属性来过滤嵌套数据。这可以通过使用Django Rest框架提供的过滤器和查询参数来实现。

首先,需要在视图集中定义一个过滤器类,该类继承自django_filters.FilterSet。在过滤器类中,可以定义各种过滤器字段,以实现对嵌套数据的过滤。

例如,假设有两个模型类ParentChild,它们之间存在一对多的关系。可以定义如下的过滤器类来过滤Child模型中的数据:

代码语言:txt
复制
import django_filters

from .models import Child

class ChildFilter(django_filters.FilterSet):
    parent_name = django_filters.CharFilter(field_name='parent__name')

    class Meta:
        model = Child
        fields = ['parent_name']

在上述代码中,parent_name是一个过滤器字段,它对应着Child模型中的parent对象的name属性。通过设置field_name='parent__name',可以实现对parent对象的name属性进行过滤。

接下来,在视图集中使用这个过滤器类。可以通过设置filter_class属性来指定使用的过滤器类。例如:

代码语言:txt
复制
from rest_framework import viewsets

from .models import Child
from .serializers import ChildSerializer
from .filters import ChildFilter

class ChildViewSet(viewsets.ModelViewSet):
    queryset = Child.objects.all()
    serializer_class = ChildSerializer
    filter_class = ChildFilter

在上述代码中,ChildViewSet视图集使用了ChildFilter过滤器类来过滤数据。当客户端发送请求时,可以通过查询参数来指定过滤条件。例如,可以通过?parent_name=John来过滤parent对象的name属性为"John"的Child对象。

这样,通过父对象的属性过滤嵌套数据的需求就可以通过Django Rest框架视图集中的过滤器和查询参数来实现了。

推荐的腾讯云相关产品:腾讯云服务器(https://cloud.tencent.com/product/cvm)和腾讯云数据库(https://cloud.tencent.com/product/cdb)可以提供稳定可靠的云计算基础设施和数据库服务,以支持Django Rest框架的应用部署和数据存储需求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

DRF框架学习(四)

DRF框架学习(四) 1.视图集对象action属性 作用: 获取现在要执行是哪一种操作。 self.action:是字符串类型,目的是获取所有执行操作。...返回latest操作所使用查询集 else: # 返回其他操作所使用查询集 2.路由Router(urls文件中使用) 作用:(重点) 配合视图集进行使用,动态生成视图集中处理函数...在执行视图dispatch()方法前,会先进行视图访问权限判断 在通过get_object()获取具体对象时,会进行对象访问权限判断 DRF框架提供了四个权限控制类: AllowAny允许所有用户...', # 仅仅允许认证用户进行访问 ) } 也可以在具体视图中通过 permission_classes属性来指定某个视图所使用权限控制类,如: from rest_framework.permissions...pass 7.过滤 对于列表数据可能需要根据字段进行过滤,我们可以通过添加django-fitlter扩展来增强支持。

2.7K40

重点内容回顾-DRF

功能: 1.视图中request对象不再是Django中原始HttpRequest类对象,而是DRF框架封装Request类对象。...数据库查询 属性: queryset(指定视图所使用查询集) 方法: get_queryset返回视图所使用查询集 get_object从视图所使用查询集中查询指定对象,默认根据pk进行查询。...5.6.5视图集对象action属性图集对象action属性是一个字符串,我们可以根据action获取所要执行是哪一种操作。...过滤:需要先安装django-filter并进行注册设置,再在视图中通过 filter_fields设置过滤字段。...团队开发注意事项 浅谈密码加密 Django框架英文单词 Django数据相关操作 DRF框架英文单词

2.4K20

DjangoRESTframework(补充)

验证失败,可以通过序列化器对象 errors 属性获取错误信息,返回一个字典, 包含字段和字段错误,若是非字段错误,可以通过修改 REST framework 配置中 NON_FIElD_ERRORS_KEY...两个基类 1) APIView rest_framework.views.APIView APIView是REST framework提供所有视图基类,继承自DjangoView类...注意,在提供序列化器对象时候,REST framework会向对象context属性补充三个数据:request、format、view,这三个数据对象可以在定义序列化器时使用。...详情视图使用: get_object(self) 返回详情视图所需模型类数据对象,默认使用lookup_field参数来过滤queryset。...P\d+)/$', BookInfoViewSet.as_view({'get': 'retrieve'}) ] action属性 在视图集中,我们可以通过action对象属性来获取当前请求视图集

2.2K30

DRF框架学习(二)

3.DRF框架 作用:大大提高RestAPI接口开发效率 简介: Django REST framework 框架是一个用于构建Web API 强大而又灵活工具。...通常简称为DRF框架REST framework。 DRF框架是建立在Django框架基础之上,由Tom Christie大牛二次开发开源项目。...3.2见识DRF魅力 我们仍以在学习Django框架使用图书英雄为案例,使用Django REST framework快速实现图书REST API。 3.2.1....(account, context={'request': request}) 通过context参数附加数据,可以通过Serializer对象context属性获取。...4.5序列化功能(重点掌握) 把实例对象转换为字典数据 知识点: 1、序列化单个对象 2、序列化多个对象 3、关联对象嵌套序列化 1)将关联对象序列化为关联对象主键 # 在英雄类(多)中添加 hbook

4.1K30

Django_rest框架实践项目(一)入门helloWord项目的创建和代码解释

,并且连接数据库,现在是连接mysql数据库,将app映射到数据库里面 不需要将这个新创建app注册到setting里面,这个和django项目不一样,但是要注册 ‘rest_framework’,...,Hyperlinked是超链接意思,Model是模型意思,所以这个类就是超链接模型序列 ,前段一点击一个链接进行了跳转,就是通过继承这个实现。...UserViewSet也是命名规范,记住就可以,ModelViewSet是类 ViewSet是 视图集合 class UserViewSet(viewsets.ModelViewSet): “...')), ] 记住: 必须在url里面创建router对象并且引用之后,才会出现rest框架页面,因为这个对象rest框架里面的类创建对象 from rest_framework import...routers 导入框架路由模块 不然页面还是django页面。

1.2K20

构建强大API-DjangoREST框架探究与实践

本文将深入探讨DjangoREST框架使用,并通过代码实例和解析来展示其强大之处。1. 什么是REST框架?...定制化API响应通过使用DRF(Django REST Framework)提供Response对象,我们可以定制化API响应数据格式和内容。...例如,我们可以在视图函数或视图集使用Response对象返回自定义响应数据:from rest_framework.response import Responsedef my_view(request...我们从构建API基础开始,介绍了如何使用Django REST框架来创建强大API,并通过代码实例和解析展示了其灵活性和易用性。...首先,我们学习了如何使用Django REST框架来创建简单API端点,包括定义模型、序列化器、视图集以及路由配置等。

34720

第 9 篇:实现分类、标签、归档日期接口

事实上,我们在上一部教程 HelloDjango - Django博客教程(第二版) 页面侧边栏:使用自定义模板标签 已经讲解了如何获取归档日期列表,只是当时返回归档日期列表直接用于模板渲染,而这里我们需要将归档日期列表序列化后通过...接着我们在接口返回一个 Response, Response 将序列化后结果包装返回(保存在 data 属性中),django-rest-framework 会进一步帮我们把这个 Response 中包含数据解析为合适格式...由于 PostViewSet 视图集已经通过 django-rest-framework 路由进行了注册,因此 list_archive_dates 也会被连带着自动注册为一个接口。...现在,侧边栏所需要数据接口就开发完成了,接下来实现返回某一分类、标签或者归档日期下文章列表接口。 在 使用图集简化代码 我们开发了获取全部文章接口。...既然要使用它,当然是先安装它(已安装跳过):pipenv install django-filter 接着我们来配置 PostViewSet,为其设置用于过滤返回结果集一些属性,代码如下: from

2.6K30

【愚公系列】2022年04月 Python教学课程 70-DRF框架之视图集

前言 使用图集ViewSet,可以将一系列逻辑相关动作放到一个类中: list() 提供一组数据 retrieve() 提供单个数据 create() 创建数据 update() 保存数据...视图集只在使用as_view()方法时候,才会将action动作与具体请求方式对应上。...self.get_queryset() 获取queryset属性所有数据 books = self.get_queryset() # 2、提取所有对象字段内容..."""经过上面的处理,我们就已经把所有视图方法写在一个类中了,但是继承类有点多 所以,drf里面提供了模型视图集[ModelViewSet],可以一次性提供5个api接口方法 最后,def还提供了只读模型视图集...此扩展方法包括:get_serializer_class(获取序列化器返回)、action属性、自定义方法使用 from django.db import DatabaseError from rest_framework.authentication

1.6K30

Django REST Framework-视图集(五)

图集路由在 Django REST Framework 中,我们可以使用路由(Router)来自动生成 API URL 路由。...路由可以根据视图集方法自动创建 URL 路径,从而简化 URL 路由配置工作。要使用路由,我们可以创建一个名为 router 路由对象,并在其中注册视图集。...例如,我们可以在 views.py 文件中定义一个名为 router 路由对象,并注册 BookViewSet 视图集:from rest_framework import routersfrom ....通过本文介绍,我们了解了如何使用图集来开发 RESTful API,并学习了视图集基本用法、认证和权限、过滤器、路由等方面的知识。...希望读者能够通过本文学习,更好地掌握 Django REST Framework 中图集技术,并用它来构建更加高效、安全和可靠 RESTful API。

42271

DRF 视图组件

目录 DRF 视图组件 视图组件大纲 两个视图基本类 五个扩展类 九个子类视图 视图集 常用视图集类 魔法类 一览表 DRF中视图“七十二变” 第一层:基于APIview五个接口 第一层五个接口demo...action属性 DRF 视图组件 DRF框架提供了很多通用视图基类与扩展类,上篇使用APIView是比较偏Base,视图使用更加简化了代码,这里介绍一下其他视图用法 Django...REST framwork 提供视图主要作用: 控制序列化器执行(检验、保存、转换数据) 控制数据库查询执行 先来看看这其中的人情世故:两个视图基本类,五个扩展类,九个视图子类,视图集方法,视图集...= None # 指定序列化类 -lookup_field = 'pk' # 查询单条,分组分出来参数,转换器对象参数名字 -filter_backends # 过滤排序功能会用它...在视图集中,我们可以通过action对象属性来获取当前请求视图集action动作是哪个。

90410

drf之请求、响应、视图

APIView与View不同之处在于: 传入到视图方法中REST frameworkRequest对象,而不是DjangoHttpRequeset对象; 视图方法可以返回REST framework...注意: 该方法在提供序列化器对象时候,会向序列化器对象context属性补充三个数据:request、format、view,这三个数据对象可以在定义序列化器时使用。...-request 当前视图请求对象 -view 当前请求类视图对象 -format 当前请求期望返回数据格式 提供关于数据库查询属性与方法 属性:queryset  指明使用数据查询集...该Mixinlist方法会对数据进行过滤和分页。...3.2 action 在视图集中,我们可以通过action对象属性来获取当前请求视图集action动作是哪个。除了默认方法动作外,还可以添加自定义动作。

2.1K20

Django REST Framework-视图集(四)

图集过滤器在实际开发中,我们通常需要对 API 返回结果进行过滤、排序和分页等操作。在 Django REST Framework 中,我们可以使用过滤器(Filter)来实现这些功能。...过滤器可以根据客户端提供查询参数来对返回结果进行过滤、排序和分页等操作。要在视图集使用过滤器,我们可以定义 filter_backends 属性,并指定过滤器类。...例如,我们可以定义一个名为 BookViewSet 图集类,并使用 DjangoFilterBackend 过滤器来对查询结果进行过滤:from django_filters.rest_framework...在 Django REST Framework 中,我们可以使用过滤器(Filter)来实现这些功能。过滤器可以根据客户端提供查询参数来对返回结果进行过滤、排序和分页等操作。...例如,我们可以定义一个名为 BookViewSet 图集类,并使用 DjangoFilterBackend 过滤器来对查询结果进行过滤:from django_filters.rest_framework

51182

第 11 篇:基于 drf-haystack 文章搜索接口

django-haystack 默认返回搜索结果是一个类似于 django QuerySet 对象,需要配合模板系统使用,因为未被序列化,所以无法直接用于 django-rest-framework...但是,通过之前功能我们看到,使用 django-rest-framework 是一个近乎标准化但又枯燥无聊过程:首先是编写序列化器用于序列化资源,然后是编写视图集,提供对资源各类操作接口。...此时就要发挥开源社区力量,去 GitHub 使用关键词 rest haystack 搜索,果然搜到一个 drf-haystack 开源项目,专门用于解决 django-rest-framework 和...在我们自定义逻辑中,首先调用类 CharField to_representation 方法,类序列化逻辑是将任何输入值都转为字符串;接着我们从 context 属性中取得 request...summary 是我们新增字段,注意我们序列化对象是文章 Post,但这个对象是没有 summary 这个属性,但是 summary 其实是对属性 body 序列化后结果,因此我们通过指定序列化化字段

1.6K20

不会DRF?源码都分析透了确定不来看?

把我们语言识别的数据转换成指定格式提交给别人(前端) 比如python中字典,列表,对象等转json,xml,prop···· 反序列化:把别人提供数据转换成我们所需格式 最常见比如我们使用...序列化: 在Django中获取到数据默认是模型对象(QuerySet对象),但是模型对象数据无法直接提供给前端或别的平台使用,我们需要把数据进行序列化,变成字符串或json数据提供给前端或其他平台;...(序列化) json格式字符串 -----》 python 对象 (反序列化) 如何使用DRF快速写出增删查改接口?...这里是经过包装后request rest_framework.request.Request常用属性和方法 这里request和原来Django使用request一样,只是多了一个request.data...import QueryDict 注意:如果前端提交过来多个同名数据也就是form表单中input标签name属性设置了多个重名数据就不能使用request.POST.get('user')来获取了

1.3K10

python教程

用我们序列化来写常规Django视图 让我们看看,使用我们新序列化类,我们怎么写一些API视图。此刻,我们不会使用REST框架其他特性,仅仅像写常规Django视图一样。...相似地,虽然我们可以在响应对象中带数据,但允许REST框架渲染响应成正确内容类型。...这些普遍行为是通过REST框架混合类(mixin classes)实现。 让我们看看如何通过混合类(mixin classes)组建视图。下面是我们views.py模型。...我们不会返回一个对象实例,而是对象实例一个属性。 我们会是使用基类代表实例,并创建我们自己.get()方法,而不是用普通视图。...代表一种关系可以有很多种方式: 使用主键。 在实体之间使用超链接。 在相关实体上使用独一无二slug。 使用相关实体默认字符串。 在表述使用嵌套实体。 一些自定义表述。

5K10

Django Rest Framework-介绍

,它将分布在网络中某个节点资源通过URL进行标识,客户端应用通过URL来获取资源表征,获得这些表征致使这些应用转变状态 所有的数据,不过是通过网络获取还是操作(增删改查)数据,都是资源,将一切数据视为资源是...REST区别与其他架构风格最本质属性 对于REST这种面向资源架构风格,有人提出一种全新结构理念,即:面向资源架构(ROA:Resource Oriented Architecture)...Django REST framework特性 直观 API web 界面 多种身份认证和权限认证方式支持 内置了 OAuth1 和 OAuth2 支持 内置了限流系统 根据 Django ORM...或者其它库自动序列化 丰富定制层级:函数视图、类视图、视图集合到自动生成 API,满足各种需要 可扩展性,插件丰富 广泛使用,文档丰富 RESTful API资料 RESTfulAPI设计指南...(客户端提供改变属性) DELETE :从服务器删除资源 过滤通过在url上传参形式传递搜索条件 https://api.example.com/v1/zoos?

1.8K40
领券