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

DRF,按模型选项字段设置的查询

DRF,全称为Django REST framework,是一个基于Django框架的强大且灵活的Web API开发工具。它提供了一套简单易用的API,用于快速构建高质量的Web API,并支持各种常见的HTTP操作,如GET、POST、PUT、DELETE等。

按模型选项字段设置的查询是DRF中的一个重要功能,它允许开发者根据模型的字段进行高级查询和筛选。通过在DRF的序列化器中设置模型字段的选项,可以实现对查询结果的精确控制。

在DRF中,按模型选项字段设置的查询可以通过以下几种方式实现:

  1. 等值查询(Exact):通过设置字段的exact选项,可以实现对字段进行精确匹配的查询。例如,exact=True表示只返回与指定值完全匹配的结果。
  2. 包含查询(Contains):通过设置字段的contains选项,可以实现对字段进行包含匹配的查询。例如,contains='example'表示只返回包含指定值的结果。
  3. 范围查询(Range):通过设置字段的range选项,可以实现对字段进行范围匹配的查询。例如,range=(start, end)表示只返回在指定范围内的结果。
  4. 正则表达式查询(Regex):通过设置字段的regex选项,可以实现对字段进行正则表达式匹配的查询。例如,regex=r'^[A-Za-z]+$'表示只返回满足指定正则表达式的结果。
  5. 空值查询(Is null):通过设置字段的is_null选项,可以实现对字段进行空值匹配的查询。例如,is_null=True表示只返回为空值的结果。
  6. 外键查询(Foreign key):通过设置字段的foreign_key选项,可以实现对外键字段进行关联查询。例如,foreign_key='related_model'表示只返回与指定外键关联的结果。

DRF的按模型选项字段设置的查询功能可以帮助开发者快速、灵活地进行数据查询和筛选,提高开发效率和数据处理能力。

推荐的腾讯云相关产品:腾讯云服务器(CVM)、腾讯云数据库(TencentDB)、腾讯云对象存储(COS)、腾讯云人工智能(AI Lab)等。您可以通过访问腾讯云官方网站(https://cloud.tencent.com/)了解更多相关产品和详细信息。

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

相关·内容

重点内容回顾-DRF

重点内容回顾-DRF 1. on_delete on_delete是定义模型类中外键一个选项。 on_delete选项指明是主表删除数据时候,对于外键引用表数据如何处理。...2. related_name related_name是在定义模型类时,外键一个选项。它功能下面慢慢给大家分析一下。...class 序列化器类名(serializers.Serializer): # 字段名 = serializer.字段类型(选项参数) 如果我们想要使用序列化器对应是Django模型类,那么可以继承自...serializers.ModelSerializer,它会依据模型字段自动生成序列化器类字段,而且已经实现了create和update代码。...在使用ModelSerializer时候,可以使用model来指定模型类,使用fields来指定具体生成字段,使用exclude可以明确排除掉哪些字段,使用readonlyfields来指明只读字段

2.4K20

DRF框架学习(二)

BookInfo参考生成 fields 指明该序列化器包含模型类中哪些字段,’all‘指明包含所有字段 3.2.2....模型类(models.Model): # 字段名 = models.字段类型(选项参数) class 序列化器名(serializers.Serializer): # 字段名 = serializers....字段类型(选项参数) 4.2通用选项参数 参数名称 解释 required 默认为True,意思是这个字段在反序列化时必须输入 read_only、write_only 默认是False,如果是仅用于反序列化输出时使用...4.7模型类序列化ModelSerializer 如果我们想要使用序列化器对应是Django模型类,DRF为我们提供了ModelSerializer模型类序列化器来帮助我们快速创建一个Serializer...# 指明依据模型哪些字段生成序列化器类字段,__all__代表所有 fields = '__all__'

4.1K30

Django REST Framework-如何使用过滤器

使用内置过滤器DRF 内置了很多过滤器,其中一些是常用过滤器:ExactFilter:使用精确匹配过滤,可以用于过滤整数、布尔值、字符串等类型字段;CharFilter:使用模糊匹配过滤,可以用于过滤字符串类型字段...;ChoiceFilter:使用选项过滤,可以用于过滤多选字段;DateFilter:使用日期过滤,可以用于过滤日期类型字段;NumberFilter:使用数字过滤,可以用于过滤数字类型字段;RangeFilter...我们将 search_fields 属性设置为 ['title', 'author', 'publisher'],以便我们可以根据这些字段进行搜索。...我们还将 ordering_fields 属性设置为 ['published_date'],以便我们可以根据 published_date 字段进行排序。...我们实现了 filter_queryset 方法来对查询集进行过滤。在这个例子中,我们使用 queryset.filter() 方法过滤出价格大于等于 10 书籍。

1.9K40

laravel model模型处理之修改查询或修改字段类型格式案例

通过上图了解 这将在原有的列上添加一列is_admin,这需要通过属性访问时才会获得,如果我们希望在获得数据时候被一起返回,则还需要append属性 class User extends Model...{ //设置方法名称 protected $appends = ['is_admin','type']; //查询时 修改 字段格式或者值 【自动触发,无需调用】 public function...yes'; } //修改时 更改储存格式或者值 【自动触发,无需调用】 public function setIsAdminAttribute($value) { //$value 代表字段值...function getTypeAttribute() { return $this- type[$this- attributes['type']]; } } 以上这篇laravel model模型处理之修改查询或修改字段类型格式案例就是小编分享给大家全部内容了

1.8K41

Django&DRF重点内容大盘点

): # 字段名 = models.字段类型(选项参数) # ......删除: 查询对象->对象.delete() 模型类.objects.filter(...).delete() 查询: 基本查询 模型类.objects.查询函数 条件查询 对应get,...filter, exclude参数中可以写查询条件 格式: 属性名__条件名=值 注意:可以写多个查询条件,默认是且关系 F对象 用于查询字段之间比较 from django.db.models...使用 1)在配置文件中设置配置项MEDIA_ROOT='上传文件保存目录' 2)定义模型类时,图片字段类型使用 ImageField 3)迁移生成表并在admin.py注册模型类,直接登录Admin...,在父类基础上,添加一些功能 class 序列化器类名(serializers.Serializer): # 字段名 = serializers.字段名(选项参数) 序列化器对象创建: 序列化器类

5.9K20

django优雅实现软删除,支持Admin和DRF软删除

何为软删除 当你想对数据进行删除时候,如果使用物理删除,那么数据真的消失了。使用软删除,可以让数据保留,但是不会被真的删除。只是在字段设置了一个值,表示数据已经被删除。...需要解决问题 DRF 暴露DELETE方法一旦被执行,就需要操作软删除,把is_deleted字段设置为True。...同样DRF对外操作其他接口,如查询,修改操作,就不允许找到已经软删除数据。 自带Admin 既然是超级管理后台,那么就允许操作任何数据,包括已经软删除,而不是列表找不到软删除数据。...简而言之: drf找不到删除数据,admin需要全部数据 drf和admin删除数据都是软删除 解决方案 DRF Django Manager 赋予了 Django模型(Model)中操作数据库能力...可以发现,由于模型Manager加持,直接把is_deleted数据一并过滤了。但是我们并不想如此。 所以第一反应,就是去注册模型地方,重写模型查询

2.1K40

接口文档如何去写?

自动生成接口文档 设置接口文档路径 文档描述说明定义位置 配置文件 访问接口文档网页 两点说明: 如何写好接口文档 HTTP携带信息方式 分离通用信息 路径中参数表达式 数据模型定义 请求示例 异常处理...一个创建用户例子:创建用户 这样组织原因 文档提供形式 DRF 自动生成接口文档 我们知道前后端分离,前端一般后端写好接口去开发,那么就需要我们明细后端接口数据等,需要写接口文档,前端按照接口文档去开发...两点说明: 1) 视图集ViewSet中retrieve名称,在接口文档网站中叫做read 2)参数Description需要在模型类或序列化器类字段中以help_text选项定义,如: class...age=&gender= 数据模型定义 数据模型定义包括: 路径与查询字符串参数模型 请求体参数模型 响应体参数模型 数据模型最小数据集: 名称 是否必须 说明 “最小数据集”(MDS)是指通过收集最少数据...请在控制台修改最大创建人数 这样组织原因 请求示例: 请求示例放在第一位原因是,要用最快方式告诉开发者,这个接口应该如何请求 路径与查询字符串参数模型: 使用mustache包裹参数 请求体参数模型

1.3K10

DRF系列总结二:脚手架搭建

,我们可以通过配置方式对外快速提供Django模型查询接口,且接口参数格式类似DjangoORM语法,比如: class RemoteSystem(Model): """...视图类中增加以下配置(具体配置参见文档),即可实现name、code、is_activated三个字段综合查询接口:/systems/?..."code": ["exact", "in"], "is_activated": ["exact"], } ... django_filters对于需要对外提供Django模型...', 'PAGE_SIZE': 10, ... } PAGE_SIZE全局设置了默认分页属性:单页数据量 DEFAULT_PAGINATION_CLASS设置为None时,则关闭了所有列表接口后台分页功能...,增加了page和total_page字段,代表当前页和总页数,并修改了返回数据字段为items,这样可以统一接口分页格式,满足前端和第三方系统对接口后台分页绝大部分需求场景。

3.6K60

drf框架serializers中ModelSerializer类简化序列化和反序列化操作

): class Meta: model=对应模型 fields=('参与序列化和反序列字段1','参与序列化和反序列字段2') #fields...) 注意点 其中fields与exclude不能共存 depth不能控制显示字段,与外键相关表会全部显示出来 二.利用模型类中方法进行指导字典生成 例如有两个模型A与B,他们c字段有外键关联 modles.py...三.另外总方法完成深度查询 class B(models.Model): name = models.CharField(max_length=60) class A(models.Model...): class Meta: model=对应模型 fields=('参与序列化和反序列字段1','参与序列化和反序列字段2') extra_kwargs...class 自定义名称(serializers.ModelSerializer): class Meta: model=对应模型 fields=('参与序列化和反序列字段

1.4K20

第 16 篇:别再手动管理接口文档了

drf-yasg 提供了一个 swagger_auto_schema 装饰器来装饰视图,只需要为装饰器设置 auto_shema=None 就可以让 drf-yasg 忽略掉被装饰视图,具体用法如下:...例如我们可以看到 GET /posts/{id}/ 这个接口响应参数,其中大部分有中文信息描述,我们可以推断,这些说明都是 drf-yasg 自动从定义在 Post 模型字段 verbose_name...其中 toc 和 body_html 因为不是 Post 中定义字段,所以 drf-yasg 无法知道关于这两个字段说明。 drf-yasg 是如何知道这个接口会返回哪些响应参数呢?...原理是 drf-yasg 会尝试去解析接口对应序列化器(Serializer),从序列化器中提取出对应请求和响应字段(如果序列化器中找不到,它会进一步去序列化器关联模型中找),因此我们就可以给序列化器中定义字段添加说明信息...查询过滤参数也是可以这样设置,例如先来看一下 GET /posts/ 参数: 可以看到用来过滤文章列表参数都没有说明,这些字段都定义在 PostFilter 中,我们来改一下代码,添加必要说明信息后再去文档中看看效果吧

1.8K20

DRF序列化和反序列化——基本使用

DRF序列化和反序列化 定义序列化器 DRF中有serializer类,我们可以从rest_framework进行导入。...serializers.IntegerField(label='阅读量') commentcount = serializers.IntegerField(label='评论量') 即序列化器中字段名称和字段类型要和模型类中保持一致...进行请求: http://127.0.0.1:8000/book 返回结果如下所示: 验证 is_valid()方法 这个方法主要是验证序列化器中定义字段时候数据类型,数据长度,字段选项,数据是否齐全等...下面先给出常用字段,参数,选项表。...用于HTML展示API页面时,显示字段名称 选项参数表 参数名称 作用 max_length 最大长度 min_lenght 最小长度 allow_blank 是否允许为空 max_value 最大值

1K10

Django项目之Elasticsearch搜索引擎

""" return SKU def index_queryset(self, using=None): """返回要建立索引数据查询集"""...return self.get_model().objects.filter(is_launched=True) document=True 表名该字段是主要进行关键字查询字段 use_template...=True 表示通过模板来指明索引值由哪些模型字段组成 5)在templates目录中创建text字段使用模板文件 在templates/search/indexes/goods/sku_text.txt.../文件名.txt 通过skuname、caption、id来进行关键字索引查询 6)手动生成初始索引 python manage.py rebuild_index 7)创建序列化器 在goods...text,并且检索出数据后再使用这个序列化器返回给前端; SKUIndexSerializer序列化器中object字段是用来向前端返回数据时序列化字段

1K20

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

关键地方在这个 search_fields,这个列表声明用于搜索字段(通常都定义为索引字段),我们在上一部教程设置 django-haystack 时,文章索引字段设置名字叫 text,如果对这一块有疑惑...但是,django-rest-framework 并没有提供这些比较个性化需求序列化字段,因此接下来我们接触 drf 一点高级用法——自定义序列化字段。...自定义序列化字段其实非常简单,基本流程分两步走: 从 drf 官方提供序列化字段中找一个数据类型最为接近作为父类。 重写 to_representation 方法,加入自己序列化逻辑。...属性中以便在视图外访问;获取 request 对象目的是希望获取查询关键字,query_params 属性是一个类字典对象,用于记录来自 URL 查询参数,例如我们之前测试查询功能时调用 URL...text=markdown,所以 query_params 保存了 URL 中查询参数,将其封装为一个类字段对象 {"text": "markdown"},这里 text 值就是查询关键字,我们将它传给

1.6K20

Flask框架在Python面试中应用与实战

在Python面试中,对DRF理解与实际应用能力是衡量候选人Web服务开发能力重要指标。本篇博客将深入浅出地探讨DRF面试中常见问题、易错点以及应对策略,并结合实例代码进行讲解。...序列化器(Serializers):阐述序列化器如何定义数据结构、验证与序列化/反序列化数据,以及关联模型(ModelSerializer)使用。...分页、过滤与排序分页(Pagination):解释如何启用分页,选择合适分页类(如PageNumberPagination、LimitOffsetPagination),并设置分页参数。...排序(Sorting):讲解如何启用排序功能,允许客户端通过查询参数指定排序字段。...对于复杂查询,考虑使用Django ORM查询优化技巧或添加数据库索引。

9610

Django REST Framework-序列化和反序列化

在Django REST Framework(DRF)中,序列化和反序列化是将Django模型转换为序列化格式,以便我们可以将其发送到前端应用程序并从前端应用程序接收数据过程。...在DRF中,我们使用序列化器类来定义序列化器,可以使用DRF提供Serializer或ModelSerializer类,具体取决于我们是否要序列化Django模型。...我们使用Meta类指定要序列化模型以及要包含在序列化器中字段。使用'all'选项,我们可以将所有模型字段包含在序列化器中。...反序列化是将序列化格式数据转换为Django模型过程,以便我们可以将数据保存到数据库中。在DRF中,我们使用序列化器类from_data()方法来执行反序列化。...我们重写了create()方法,该方法负责将反序列化后数据转换为模型实例。在此示例中,我们使用validated_data参数来创建新模型实例。

70021

Django序列化器简单使用

反序列化,完成数据校验功能 为方便理解后面序列化器中字段,我们先在创建APP中models.py 建立一个数据库模型类。...序列化器字段声明类似于我们前面使用过表单系统。 开发restful api时,序列化器会帮我们把模型数据转换成字典。...验证成功,可以通过序列化器对象validated_data属性获取数据。 在定义序列化器时,指明每个字段序列化类型和选项参数,本身就是一种验证行为。...如果我们想要使用序列化器对应是Django模型类,DRF为我们提供了ModelSerializer模型类序列化器来帮助我们快速创建一个Serializer类。...: model=Book # 对应上models.py中模型 fields='__all__' model 指明参照哪个模型类 fields 指明为模型哪些字段生成

1.5K40

美多商城项目(五)

并且在查询出数据,返回结果之前,先将查询结果存到缓存中,便于下次使用。 2.2使用缓存 在Django REST framework中使用缓存,可以通过 drf-extensions扩展来实现。...数据库表格一般都是DBA进行设计,我们不需要深入了解,所以此处不做过多阐述。 在用户模型类中有一个小点回顾一下: ordering 表示是表名在进行Address查询时,默认使用排序方式。...3.1设置默认地址 可以在用户地址模型类中添加一个标记 is_default,如果是默认地址,将标记改为True。...设置步骤 为User模型类添加默认地址 class User(AbstractUser): ......对于没有的字段provinceid、cityid和district_id,我们需要自己定义。 有些字段是序列化时使用,有些字段是反序列化时使用,因此我们需要对这些字段通过参数进行设置

1.2K30
领券