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

DRF多ManytoMany字段更新和添加

背景:drf序列化器给模型输出带来了便利但是对于多字段网上查询内容却是很少(也有可能是本人不会搜答案)经过我多个日夜摸索,终于实现了我需求,现将自己心得记录一下说下我需求:定义一个订单模型里面的订单...orderId 是自动生成UUID订单区域是外键,下单人也是外键,菜品orderMenu是一个多字段(其实通过我查到方法说都是外键字段就可以实现但是个人觉得菜品和订单应该是多多会比较好理解...orderMenu = request.data.get('orderMenu') for i in orderMenu: # 我思路是既然不能在更新主表时候更新多字段那就单独把多字段提出来更新...id i['order_id'] = serializer.instance.pk # 组建新中间表数据传入序列化器 ojb = OrderCenterThoughSerializer...主要是一个思路,drf ModelSerializer 和 ModelViewSet 封装太严实了,通过这样方法来更新和添加多字段实属自己技术不成熟。

68720

DjangoRestFramework,序列化组件、视图组件

drf序列化组件还能校验数据 cs = CourseSerializers(data=request.data,many=False) #注意必须是data=这种关键字参数,注意,验证单条数据时候写上...(max_length=32, source='publish.name') # source指定返回那个publish对象其他字段数据,可以接着写字段,也就是说关联所有的字段数据都可以写在这里进行序列化...等基础校验之外,还会会根据咱们写这个序列化组件设置字段中有read_only=True属性字段排除掉,这也是为什么我们在面写多多和一字段时,如果字段名称和model表多或者一字段名称相同...,那么用户提交过来数据以这个字段命名数据会被剔除,那么validated_data里面就没有多多和一字段数据了,那么再执行create方法时候validated_data.pop('authors...,也就是说,如果我们将SerializerMethodFieldread_only改成False,那么在进行字段验证时候,这个字段就没有被排除,也就是说,必须传给我这个authors_list名字数据

2.6K20
您找到你想要的搜索结果了吗?
是的
没有找到

重点内容回顾-DRF

在django.db.models包含了可选常量,常用有三种: a.CASCADE级联,删除主表数据时候,连同删除外键表数据。这个就有点狠了,按需求慎用。...()来进行数据校验,我们还可以补充额外验证: a.先写一个函数(如about_django)封装补充验证功能,然后在字段添加 validators参数,如下: btitle = serializers.CharField...,validators=[about_django]) b.在序列化器定义一个方法 validate_,来 字段进行验证。...return value c.在序列化器定义 validate方法进行补充验证(结合多个字段内容验证) def validate(self, attrs): # 此处attrs是一个字典类型数据...,DRF框架会自动异常进行处理,并且会把处理之后错误信息返回给客户端。

2.4K20

Django+Vue开发生鲜电商平台之7.用户登录和注册功能

一、DRFtoken基本使用 1.DRFtoken登录原理 基于DRF前后端分离登录与单独使用Django登录原理不同,不再需要CSRF验证DRF提供了许多开箱即用身份验证方案,并且还允许实现自定义方案...身份验证方案始终定义为类列表,DRF框架尝试列表每个类进行身份验证,并使用成功进行身份验证第一个类返回值设置request.user和request.auth。...,使用基于Token身份验证方法,在服务端不需要存储用户登录记录。...如果将验证信息保存到数据,会增加数据操作和存储开销;如果存到session,又会增大服务器存储压力;如果采用加密算法来用户信息加密得到token,则很容易被解密而泄漏用户信息。...、并不需要保存到用户数据,因此在验证之后需要删除,在validate(attrs)方法实现即可,同时因为人为设定前端传递回来手机号数据变量名为username而非mobile,因此需要在validate

4.2K20

DRF序列化和反序列化——数据验证进阶

数据验证 本文上接DRF序列化和反序列化——基本使用,如果不了解DRF序列化和反序列化,请先阅读前文。 反序列化数据验证进阶 首先,后端一定是不相信前端传来数据。...因此,我们之前使用is_valid()方法进行数据验证,但是这还不够。因为is_valid()只是字段类型,长度,最大值,最小值等进行验证。在实际开发,我们还需要对字段内容进行验证。...单字段验证 在序列化器定义方法validate_name来实现name字段进一步自定义验证。如果需要对一个字段进行自定义验证,可以定义名为validate_字段方法来实现。...下面使用正确数据进行请求 多字段验证 有时候,我们需要进行多字段之间验证,例如密码和重复密码,我们希望这两者是相等。上面的单字段验证是做不到。...不过DRF提供了不带字段名称validate方法可以进行多字段验证

71310

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

在Django REST Framework(DRF,序列化和反序列化是将Django模型转换为序列化格式,以便我们可以将其发送到前端应用程序并从前端应用程序接收数据过程。...在DRF,我们使用序列化器类来定义序列化器,可以使用DRF提供Serializer或ModelSerializer类,具体取决于我们是否要序列化Django模型。...我们使用Meta类指定要序列化模型以及要包含在序列化器字段。使用'all'选项,我们可以将所有模型字段包含在序列化器。...反序列化是将序列化格式数据转换为Django模型过程,以便我们可以将数据保存到数据。在DRF,我们使用序列化器类from_data()方法来执行反序列化。...在执行反序列化之前,我们需要验证输入数据以确保其有效性。

70721

DRF框架英文单词

这里就简单回顾一下之前内容:资源作为网址,只能有名词,不能有动词,而且往往与数据表名相对应;还有就是名词用复数。...20. model/'mɑdl/模型,我们在很多时候都用到了这个单词,在DRF框架我们在下面的情况中用到了这个单词。指明该序列化器处理数据字段从模型类BookInfo参考生成。...表明该字段是否允许传入None,默认False validators 该字段使用验证器 error_messages 包含错误编号与错误信息字典 label 用于HTML展示API页面时,显示字段名称...在序列化器需要同时多个字段进行比较验证时,可以定义validate方法来验证: btitle = serializers.CharField(label='名称', max_length=20, validators...Destroy/dɪ'strɔɪ/破坏,我们通常用这一个操作,来表示删除指定信息。

1.7K30

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

Django REST framework (DRF) 是一个强大而灵活工具包,用于构建Web API,特别是基于Django应用程序。...在Python面试DRF理解与实际应用能力是衡量候选人Web服务开发能力重要指标。本篇博客将深入浅出地探讨DRF面试中常见问题、易错点以及应对策略,并结合实例代码进行讲解。...一、常见面试问题核心组件与工作流程视图(Views):解释视图在DRF作用,介绍基于视图(ViewSet、GenericViewSet)与视图集(ViewSets)概念,以及如何关联到URL。...序列化器(Serializers):阐述序列化器如何定义数据结构、验证与序列化/反序列化数据,以及关联模型(ModelSerializer)使用。...二、易错点与避免策略序列化器验证遗漏:确保在序列化器充分定义验证规则,使用validate_方法关联字段、自定义逻辑进行验证,防止脏数据进入数据库。

10010

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

视图类增加以下配置(具体配置参见文档),即可实现name、code、is_activated三个字段综合查询接口:/systems/?...,增加了page和total_page字段,代表当前页和总页数,并修改了返回数据字段为items,这样可以统一接口分页格式,满足前端和第三方系统对接口后台分页绝大部分需求场景。...": 0 } DRF接口一般会直接返回创建数据或者数据列表,如图所示: [DRF接口返回一] [DRF接口返回二] 于是,结合开发规范对接口要求,我们需要对DRF返回格式进行统一处理 首先,我们简单看下...# 时间字段序列化格式 'DATETIME_FORMAT': "%Y-%m-%d %H:%M:%S", 'DATETIME_INPUT_FORMATS': "%Y-%m-%d...%H:%M:%S", ... } 我们不符合格式要求response数据进行了规范化,继承自这个以后,我们可以得到规范化接口: ...

3.6K60

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

JWT 与普通Token一样,都是访问资源令牌,区别是普通Token服务端验证token信息要查询数据验证,JWT验证token信息不用查询数据库,只需要在服务端使用密钥效验。...与普通Token一样,都是访问资源令牌,区别是普通Token服务端验证token信息要查询数据验证,JWT验证token信息不用查询数据库,只需要在服务端使用密钥效验。...DRF支持四种认证方式: BasicAuthentication:基于用户名和密码认证,适用于测试 SessionAuthentication:基于Session认证 TokenAuthentication...:基于Token认证 RemoteUserAuthentication:基于远程用户认证 DRF支持权限: IsAuthenticated:只有登录用户才能访问所有API AllowAny:允许所有用户...sex=%E7%94%B7 搜索和排序 DRF提供过滤器帮助我们快速字段进行搜索和排序 继续修改app视图中新增过滤字段: myapp/views.py from rest_framework.viewsets

4.3K10

Django+Vue开发生鲜电商平台之8.商品详情页功能实现

二、热卖商品实现 可以看到,在商品详情页右侧有热卖商品,这要用到商品is_hot字段,在过滤器is_hot字段进行过滤即可,apps/goods/filters.py如下: class GoodsFilter...2.DRF权限验证 通常,仅进行身份验证或标识不足以获取信息或代码。为此,请求访问实体必须具有授权。权限与身份验证和限制一起,确定是否应准予请求访问或拒绝访问。...权限用于授予或拒绝不同类别的用户API不同部分访问,最简单许可方式是允许访问任何经过身份验证用户,并拒绝访问任何未经身份验证用户。...现在需要进一步实现权限验证,限制用户只能操作自己收藏等数据,这里选择IsAuthenticated,这是用来判断是否已经登录,同时需要自定义权限来判断要删除收藏记录用户是否是当前用户。...可以看到,先在DRF后台增加收藏,然后在Postman模拟访问获取到JWT后再删除,显然,只能删除用户自己收藏,而不能删除其他用户收藏。

1.1K20

DRF框架学习(二)

: 1)根据pk获取指定图书对象 2)获取参数(btitle,bpub_date)并进行校验 3)修改指定图书数据并更新到数据表 4)返回修改图书json数据,状态码:200 3、删除指定图书信息...__' model 指明该序列化器处理数据字段从模型类BookInfo参考生成 fields 指明该序列化器包含模型类哪些字段,’all‘指明包含所有字段 3.2.2....(label='图书') 4.6反序列化功能(重点掌握) 4.6.1数据校验 is_valid()调用此方法进行数据校验,它会先去你定义序列化器类字段,看是否满足你条件,然后再进行系统提供校验...字段进行验证,如 def validate_btitle(self,value): if 'django' not in value.lower(): raise...ModelSerializer与常规Serializer相同,但提供了: 基于模型类自动生成一系列字段 包含默认create()和update()实现 class BookInfoSerializer

4.1K30

Django REST Framework

在使用从外部传入数据之前,必须使用此函数进行验证 如果验证失败,返回数据错误异常 validated_data: 经过验证数据,存入此结构 视图 DRF视图从处理任务,处理流程等跟Django...对传入数据请求进行解析 data属性 请求数据体,类似于Djangorequest.POST, request.FILES 在DRF主要指的是Json query_params 所有传入关键字...- 4xx: 请求错误 - 5xx: 服务器错误视图类APIViewrest_framework.views.APIView是djangoView子类跟View有不同地方传入传出数据是...drf请求和反馈类会引发并处理APIException在dispatch之前,会进行身份验证,权限检查,流量控制支持属性有authentication_classes: 列表或者元祖,身份验证类...permisson_classes: 进行权限验证throttle_classes:流量控制类API访问提供了一些方便HTTP-Method + 名词默认HttpMethod常用方法提供了支持案例

2.1K63

【愚公系列】2022年04月 Python教学课程 69-DRF框架之五个扩展类视图子类视图

2.序列化器定义 3.视图定义使用序列化器 总结 ---- 一、DRF框架之五个扩展类视图子类视图 常用子类视图 1.CreateAPIView 提供 post 方法 继承自: GenericAPIView...instance=None, data=None): """ 初始化方法 :param instance: 对象 :param data: 验证数据...""" return {'btitle': 'python'} def validate(self, atter): """ 多个字段验证...BookSerializer(BaseSerialzier): """ 自定义序列化器 """ def validate(self, atter): # 字段验证逻辑...框架五个扩展类视图子类视图,是为了更便于crud封装减少通用逻辑代码量,也是DRF简化版本,其实下面还有视图集可以进一步简化代码,等下一节介绍了。

29020

九、个人中心功能开发

九、个人中心功能开发 9.1.drfapi文档自动生成和 (1) url #drf文档,title自定义 path('docs',include_docs_urls(title='仙剑奇侠传...')), 访问:http://127.0.0.1:8000/docs  就可以自动生成 (2)drf文档优点: 自动生成 文档里可以做交互和测试 可以生成js,shel和python代码段 (3)...: model字段中加 serializer字段加 filter也可以加 9.2.动态设置serializer和permission获取用户信息  用户个人信息修改,因为手机号是验证,不能随便改...,所以要创建一个UserDetailSerializer #2.问题又来了,如果注册使用userdetailSerializer,又会导致验证失败,所以需要动态使用serializer...                           -->>动态权限分配 get_serializer_class                     -->>动态序列化分配 现在就可以从数据库获取用户信息了

87310

Django REST framework+Vue 打造生鲜超市(八) 九、个人中心功能开发

九、个人中心功能开发 9.1.drfapi文档自动生成和 (1) url #drf文档,title自定义 path('docs',include_docs_urls(title='仙剑奇侠传'...(2)drf文档优点: 自动生成 文档里可以做交互和测试 可以生成js,shel和python代码段 (3)代码中注释格式: ViewSet格式,更多请看官方文档 class GoodsListViewSet...: model字段中加 serializer字段加 filter也可以加 9.2.动态设置serializer和permission获取用户信息  用户个人信息修改,因为手机号是验证,不能随便改...,所以要创建一个UserDetailSerializer #2.问题又来了,如果注册使用userdetailSerializer,又会导致验证失败,所以需要动态使用serializer...,可以删除对应商品 ?

94880

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

queryset对象,用来将orm转成json # 2. data:把需要验证数据传递给data,用来验证这些数据是不是符合要求 # 3. many:如果instance是一个queryset对象,那么就需要设置为...serializers.IntegerField(required=True) def create(self, validated_data): """ 根据提供验证数据创建并返回一个新...22周岁以上才能结婚"}) return attrs 我们上面代码首先定义了序列化字段字段参数都继承自Field类,参数如下 def __init__(self, read_only...write_only:当为True时表示这个字段只能写,只有在新增数据或者更新数据时候会用到。...时,允许该字段值为空   之后我们又定义了局部钩子,校验特殊字段,比如需求规定,用户性别只能输入男和女,此时你就可以定义一个钩子,当然drf自动帮我们做了一些校验,比如需要字段是int类型,你输入

1.1K30
领券