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

DRF:以编程方式从TextChoices字段中获取默认选择

DRF 是 Django Rest Framework 的缩写,是一个用于构建 Web API 的强大框架。它基于 Django 平台,并提供了一套简单而灵活的工具,使开发人员可以轻松地构建和部署 API。

在 Django 中,TextChoices 字段是一种用于保存在数据库中的文本值的选择项。它通过使用枚举类定义选项列表,并在数据库中存储选项的值。在 DRF 中,我们可以以编程方式从 TextChoices 字段中获取默认选择。

以下是一个示例代码:

代码语言:txt
复制
from django.db import models

class MyChoices(models.TextChoices):
    OPTION1 = 'option1', 'Option 1'
    OPTION2 = 'option2', 'Option 2'
    OPTION3 = 'option3', 'Option 3'

class MyModel(models.Model):
    my_field = models.CharField(
        max_length=20,
        choices=MyChoices.choices,
        default=MyChoices.OPTION1
    )

在上面的代码中,我们定义了一个包含三个选项的 TextChoices 字段 MyChoices,并在 MyModel 中使用它。在 MyModel 的 my_field 字段中,我们设置了默认选择为 MyChoices.OPTION1。

使用 DRF,我们可以通过以下方式以编程方式获取默认选择:

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

class MyModelSerializer(serializers.ModelSerializer):
    my_field = serializers.ChoiceField(choices=MyChoices.choices, default=MyChoices.OPTION1)

    class Meta:
        model = MyModel
        fields = '__all__'

在上面的代码中,我们定义了一个 MyModel 的序列化器 MyModelSerializer,并在其中使用了 serializers.ChoiceField。通过设置 choices 参数为 MyChoices.choices,并设置 default 参数为 MyChoices.OPTION1,我们以编程方式获取了默认选择。

通过使用 DRF,我们可以方便地从 TextChoices 字段中获取默认选择,并使用这些选择构建和部署 API。

腾讯云相关产品推荐:腾讯云服务器(https://cloud.tencent.com/product/cvm)

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

相关·内容

Django3.0新鲜出炉!全面解读新特性,ASGI真香实锤,不来了解一下?

模型字段选择的枚举 在之前的Django版本,我们在model的field字段需要枚举的时候通常需要这么做 from django.utils.translation import gettext_lazy...,需要我们手动去指定,而在Django 3.0,自定义枚举类型TextChoices,IntegerChoices和Choices现在作为一个的方式来定义Field.choices。...为文本和整数字段提供了类型TextChoices 和IntegerChoices类型。在 Choices类允许定义为其他具体的数据类型兼容的枚举。...PBKDF2密码哈希器的默认迭代计数150,000增加到180,000。 表格 表单集可以通过can_order设置ordering_widget属性或覆盖来控制在订购表单时使用的小部件。...这些设置的默认值和之前的版本相同。 添加了对乌兹别克语的支持和翻译。

2.7K10

Django Swagger文档库drf-spectacular

因此我选择使用Swagger文档,之前使用过drf-yasg,但是drf-yasg现在还不支持OpenAPI 3.0,而在drf-yasg的官方文档为我们推荐了另一个库:drf-spectacular...默认不包含UI资源,采用CDN方式引入网络外部资源,如果需要本地使用UI资源,可以按照一下方式引入: pipenv install drf-spectacular[sidecar] 配置settings.py...:替换发现的文档字符串 summary:一个可选的短的总结描述 deprecated:将操作标记为已弃用 tags:覆盖默认标记列表 exclude:设置为Trueschema中排除操作 operation...methods:检查extend_schema特殊的方法,默认匹配所有 versions:检查extend_schema特殊的API版本,默认匹配所有 example:将请求/响应示例附加到操作...,因此页面就会显示两种认证方式 BUG 目前使用存在一个BUG,就是对于read_only字段,按照我们的理解就是在查询请求是返回给客户端,而创建时在请求体不需要包含。

1.9K20
  • DRF框架学习(四)

    DRF框架学习(四) 1.视图集对象的action属性 作用: 获取现在要执行的是哪一种操作。 self.action:是字符串类型,目的是获取所有执行的操作。...DRF框架的默认权限控制如下: 'DEFAULT_PERMISSION_CLASSES': ( 'rest_framework.permissions.AllowAny', # 允许所有人 ) 可以在配置文件设置权限管理类...6.1 使用 DRF框架默认没有进行全局限流设置,但是提供了配置项,我们可以在配置文件,使用 DEFAULT_THROTTLE_CLASSES 和 DEFAULT_THROTTLE_RATES进行全局配置...我们可以在配置文件设置全局的分页方式,如: REST_FRAMEWORK = { 'DEFAULT_PAGINATION_CLASS': '', 'PAGE_SIZE'...NotAcceptable 要获取的数据格式不支持 Throttled 超过限流次数 ValidationError 校验失败 10.1异常处理设置 DRF框架的默认异常处理设置如下: REST_FRAMEWORK

    2.8K40

    Django rest Framework入门 三 :序列化与反序列化

    笔记中提到的代码repo:https://github.com/yexia553/drf 序列化与反序列化 简单地说,序列化就是数据库取出数据处理后传给API(请求方);反序列化就是API(请求方...)获取数据处理后存到数据库。...""" # read_only属性表示这个字段只能用于序列化,也就是只能从数据库读取然后给api, # 但是不能通过api获取数据对它进行更新,比如id id = serializers.IntegerField...(label='ID', read_only=True) # required属性表示api传递数据过来的时候这个字段是不是必须的, # 一般在Django的Model没有默认值的时候都是必须的...校验 前面提到反序列化是API获取数据,处理后存到数据库。这里说的“处理”其中有一个环节就是对获取到的数据进行校验,校验合格后才能真正存储到数据库

    17110

    【Django】在大型项目中的django的性能模型字段primary_key

    模型字段 序列本身由正好两个项目的迭代项组成(例如,[(A,B),(A,C)…]),作为该字段选择。如果给出了选择,它们将通过模型验证来执行。...默认表单部分将是包含这些选项的选择框,而不是标准文本字段。 每个元组的第一个元素是要在模型上设置的实际值,第二个元素是人类可读的名称。...,然后引用它,但在模型类定义选择和每个选择的名称可以在使用它的类中保留所有这些信息,并帮助引用这些选择(例如,Student.SOPHOMORE将在导入学生模型的任何位置工作)。...如果没有为模型的任何字段指定主键_Key=True,Django将自动添加一个字段来保存主键,因此不需要在任何字段上设置主键_Key=True,除非想覆盖默认主键行为。...此字段默认表单部分是TimeInput。一些JavaScript快捷方式已添加到管理

    2K20

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

    既然要使用第三方库,第一步当然是安装它,进入项目根目录,运行: $ pipenv install drf-haystack 由于需要使用到搜索功能,因此需要启动 Elasticsearch 服务,最简单的方式就是使用项目中编排的...自定义序列化字段其实非常的简单,基本流程分两步走: drf 官方提供的序列化字段找一个数据类型最为接近的作为父类。 重写 to_representation 方法,加入自己的序列化逻辑。...因为 title、body 均为字符型,因此选择父类序列化字段为 CharField,定义一个 HighlightedCharField 字段如下: from .utils import Highlighter...对象,这个对象就是视图中的 HTTP 请求对象,但是因为 django request 对象无法像 flask 那样全局获取,因此 drf 在视图中将其保存在了序列化器和序列化字段的 context...属性以便在视图外访问;获取 request 对象的目的是希望获取查询的关键字,query_params 属性是一个类字典对象,用于记录来自 URL 的查询参数,例如我们之前测试查询功能时调用的 URL

    1.6K20

    Django rest Framework入门 五 :认证、权限、限流、分页和过滤

    ,一般还是会在配置文件添加一个基础的权限控制策略,让其全局生效,这个策略一般选择IsAuthenticated, 如下代码所示: ```python REST_FRAMEWORK = {...,这样可以在请求对这些字段进行排序 到这里就可以在API请求对数据进行排序了,比如: /books/bookinfos?...DRF上应用过滤器有两种方式,一种配置简单,但是功能也有限,适用于比较需要简单的场景,另一种代码较多,但是功能强大。...page=2&page_size=3 异常处理 DRF还有一个功能就是可以捕捉异常,默认情况下可以捕捉的异常如下: APIException 所有异常的父类 ParseError 解析错误 AuthenticationFailed...要获取的数据格式不支持 Throttled 超过限流次数 ValidationError 校验失败 虽然能够捕捉的异常已经很多了,但是不可能捕捉所有的异常,这里数据库异常为例。

    7810

    DRF框架学习(二)

    3.3, 3.4, 3.5, 3.6) Django (1.10, 1.11, 2.0) DRF是以Django扩展应用的方式提供的,所以我们可以直接利用已有的Django环境而无需从新创建。...,__all__代表所有 fields = '__all__' model 指明该序列化器处理的数据字段模型类BookInfo参考生成 fields 指明该序列化器包含模型类的哪些字段....字段类型(选项参数) 4.2通用选项参数 参数名称 解释 required 默认为True,意思是这个字段在反序列化时必须输入 read_only、write_only 默认是False,如果是仅用于反序列化输出时使用...default 我们在使用序列化和反序列化时使用的默认值 allow_null 表明该字段是否允许传入None,默认False help_text、label_text 可以理解为注释,在web直观显示的时候有一个显示信息...有三种方式

    4.1K30

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

    接下来我们就一个个地来解决上面的问题,只需要稍加改变一下 drf-yasg 的默认行为,就能够生成我们预期的文档内容。...其中 toc 和 body_html 因为不是 Post 定义的字段,所以 drf-yasg 无法知道关于这两个字段的说明。 drf-yasg 是如何知道这个接口会返回哪些响应参数的呢?...原理是 drf-yasg 会尝试去解析接口对应的序列化器(Serializer),序列化器中提取出对应的请求和响应字段(如果序列化器找不到,它会进一步去序列化器关联的模型找),因此我们就可以给序列化器定义的字段添加说明信息...) 这样两个字段的含义就非常清晰了,效果如下: 其它一些没有说明信息的字段都可以根据这种方式来添加,只需要找到文档的参数在代码对应的来源字段就可以了。...先来看 GET /posts/archive/dates/,它对应的 action 是 list_archive_dates,由于 action 默认它所在的视图集中继承一些属性,而 drf-yasg

    1.8K20

    django和drf_类的方法可以序列化么

    字段的参数都继承自Field类,参数如下 def __init__(self, read_only=False, write_only=False, required=None...比如我们的账号密码,只允许用户提交,后端是不返回密码给前台的 required:当为True时表示这个字段必填,不填状态码会返回400 default:默认值,没什么好说的 allow_null:当为True...时,允许该字段的值为空   之后我们又定义了局部钩子,校验特殊的字段,比如需求规定,用户的性别只能输入男和女,此时你就可以定义一个钩子,当然drf自动帮我们做了一些校验,比如需要的字段是int类型,你输入.../student/,在body中选择json格式,输入如下数据 { "name": "aaaa", "sex": 2, "age": 18 } 运行结果如下: { "id...] } 测试默认的必填项不填 输入测试数据 { "name": "kkk" } 返回结果如下: { "sex": [ "该字段是必填项。"

    1.1K30

    django rest_framework 分页

    简介 本文主要介绍在drf框架如何对查询的数据进行分页,在drf框架中有提供该基础功能的使用案例和文档,详情参考drf-pagination-官网文档 (opens new window) 内置分页方式...drf框架默认提供几种分页方式,并封装成了模块提供给开发者调用,主要是以下几种: PageNumberPagination,主要是提供page​和page_size​进行分页。...自定义分页 框架本身提供了分类的模块,但在实际工作并不适用,所以我们可以通过继承的方式对内置的分页模块的部分属性进行覆盖,符合自身业务。...page_size_query_param:前端请求分页数量的字段 上面是部分常用的字段,如果有特殊业务可以看源码再进行修改。...,在REST_FRAMEWORK​设置DEFAULT_PAGINATION_CLASS​,该key是指定分页模式使用哪个分页类,而这里使用的是drf框架内置的分页类LimitOffsetPagination

    61710

    DRF进阶之DRF视图和常用功能

    DRF视图和常用功能 DRF视图 DRF视图类介绍 在DRF框架中提供了众多的通用视图基类与扩展类,简化视图的编写。...View:Django默认的视图基类,负责将视图连接到URL,HTTP请求方法的基本调度,之前写类视图一般都用这个。...常用功能 主流认证方式 Session认证 HTTP是一个无状态的协议,每次访问都是新的,早期主要用于浏览网页,随着时代发展,像在线购物网站的兴起,就面临着记录哪些人登录系统,哪些人购物车里放了商品。...DRF支持四种认证方式: BasicAuthentication:基于用户名和密码的认证,适用于测试 SessionAuthentication:基于Session的认证 TokenAuthentication...sex=%E7%94%B7 搜索和排序 DRF提供过滤器帮助我们快速对字段进行搜索和排序 继续修改app视图中新增过滤字段: myapp/views.py from rest_framework.viewsets

    4.6K10

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

    ,在Django基础工程的基础上,安装DRF并进行配置:比如统一接口返回格式、统一异常处理等,并在后面的文章,不断完善出一套DRF脚手架,以降低后面的开发同学的趟坑成本。...===================================== REST_FRAMEWORK = { } DRF优先从django配置文件的REST_FRAMEWORK字典获取配置信息...,获取不到则使用DRF默认配置: ......(接口提供账号密码),仅保留了使用Django默认session后端进行身份验证的机制,适用于与网站在相同的Session环境运行的AJAX客户端;身份验证成功后,会得到以下凭据: - `request.user...的视图类增加以下配置(具体配置参见文档),即可实现name、code、is_activated三个字段的综合查询接口:/systems/?

    3.7K60

    DRF框架的英文单词

    这个在网上说法不一,先按这种理解,毕竟没人用这种操作方式了,而是用put。 8....20. model/'mɑdl/模型,我们在很多的时候都用到了这个单词,在DRF框架我们在下面的情况中用到了这个单词。指明该序列化器处理的数据字段模型类BookInfo参考生成。...,指明该序列化器包含模型类的哪些字段,'all'指明包含所有字段。...,默认False write_only 表明该字段仅用于反序列化输入,默认False required 表明该字段在反序列化时必须输入,默认True default 序列化和反序列化时使用的默认值 allow_null...表明该字段是否允许传入None,默认False validators 该字段使用的验证器 error_messages 包含错误编号与错误信息的字典 label 用于HTML展示API页面时,显示的字段名称

    1.7K30

    drf框架中所有视图及用法

    0909自我总结 drf框架中所有视图及用法 一.drf框架的所有视图类 from django.views import View from rest_framework import views,...generics, mixins, viewsets 最基础:django自带的views类 drf框架中最基础的视图类:views.APIView drf框架工具视图:generics GenericAPIView...destroy 单删 viewsets视图集 上述视图都是基于django自带的views进行相关方法的分装 二.viewsets视图集 ViewSetMixin:视图集工具 - 重写as_view - 将 请求方式...- 可以mixins那继承功能,也可以自定义功能 ViewSet:与模型类无关或不是标准模型类接口 - 一般都是自定义功能 三.genericsGenericAPIView使用 将 queryset...:为True可以进行局部字段修改,默认为False为所有字段修改 使用这些方法的重要前提必须要 queryset serializer_class 如果我们要使用get_object()必须前端传给我们一个

    1.8K30

    drf的接口文档生成与管理

    参考Core API官网以及drf官网,最终生成的接口文档是以网页的方式呈现的,自动接口文档能生成的是继承自APIView及其子类的视图,具体实现流程如下 2.1 安装Core API库 pip3 install...3、接口文档参数Description需要在模型类或序列化器类的字段help_text选项定义,例如 在模型类定义 class EnvironmentView(models.Model):...Swagger可生成一个具有互动性的API控制台,可快速学习和尝试API Swagger可生成客户端SDK代码,用于不同平台上Java、Python...的实现 Swagger文件可在许多不同的平台上代码注释自动生成...3.6 说明 Django REST Swagger19年开始就已弃用不再维护了,作者在官方网站上说明了更推荐使用drf-yasg 可以阅读https://github.com/marcgibbons...urlconf: 描述哪个文件获取路由配置, 缺省值是urls, 该参数直接透传至SchemaGenerator public: 描述API文档是否公开, 如果未 False, 则仅返回当前用户具有权限的接口

    4.7K10

    重点内容回顾-DRF

    5.2Restful API接口设计风格 关键点: a.url地址尽量使用名词,不要使用动词; b.请求url地址采用不同的请求方式执行不同的操作;(POST新增/GET获取/PUT修改/DELETE删除...5.3序列化&反序列化 下面我们最近推文的项目来简单的理解两个概念。 序列化:将模型对象转换为字典或者json数据的过程。 反序列化:将前端传递的数据保存到模型对象的过程。...数据库查询 属性: queryset(指定视图所使用的查询集) 方法: get_queryset返回视图所使用的查询集 get_object视图所使用的查询集中查询指定的对象,默认根据pk进行查询。...def exception_handler(exc, context): # 先调用DRF框架的默认异常处理函数 response = drf_exception_handler(exc...团队开发注意事项 浅谈密码加密 Django框架的英文单词 Django数据库的相关操作 DRF框架的英文单词

    2.4K20
    领券