首页
学习
活动
专区
圈层
工具
发布

DRF中多对多ManytoMany字段的更新和添加

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

2.9K20

修改ES返回字段方式提升性能

在性能对比测试的环节, 发现ES竟然比Solr慢了非常多, 响应时间是Solr的两三倍, 然后开始各种排查, 最后发现ES的响应时间竟然随着request.size的增加呈线性增加, 这说明大部分时间都耗在了获取返回字段上面...而我们目前在召回时并未获取很多字段, 只获取了UID(我们自己定义的一个基于docvalues列存的字段)和score....测试不同的获取字段方式 测试: 在返回4000条文档的UID,score属性的测试中, 配置不同的返回字段参数的响应时间如下: "_source":{ "include":["UID"] }, 120ms...通过阅读源码知道, 当设置了"_source":false的时候, ES确实没有读取_source, 但是会默认读取两个字段: _id和_routing, 这两个字段是ES内置的, 正常情况下无法查看其字段类型..._id字段的列存.

3.3K52
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    @JsonView注解如何优雅的忽略字段返回

    Avengers 之前我在写接口的时候,经常返回一些前台不需要的一些字段,举个例子,像用户表,一般由用户名、密码、电话、注册时间等信息,但是我们一般在前台展示的时候是不需要将注册时间展示给用户的,有的朋友可能说了...,直接使用@JsonIgnore注解就可以忽略该字段,确实给属性字段加了该注解确实可以让它不返回给前台,但是还有这样一个需求,我们一般都有一个后台管理系统需要管理所有的用户,我们需要查看这个用户是什么时候注册的...JsonView(UserDetailView.class) private Date registeredTime; } 我们在上方分别定义了两个接口,使用@JsonView注解,我们将前台需要展示的字段指向...user.setRegisteredTime(new Date()); return R.data(user); } } 我们需要在Controller方法上面也加@JsonView注解,需要注明我们返回哪些字段...,它里面装的就是我们刚才配置的那些字段,最后我们来看一看结果。

    2.3K30

    PlayFramework 2.x 技巧-@ManyToMany关联

    本文主要从两个方面谈一下@ManyToMany关联,一方面是@ManyToMany的常用场景,另一方面是@ManyToMany的使用误区。 2....@ManyToMany的常用场景 1)单向@ManyToMany关联     举例来说,User和Role是ManyToMany关联,假如我们只关心一个User有多少个roles,而不关心一个Role...在这种情况下,@ManyToMany注解在实体双方对会出现,但是需要注意的是,关系的查询端需要指定mappedBy属性(该属性在下文会有详细介绍)。...@ManyToMany的使用误区 1)双向@ManyToMany关联时,实体双方都未指定mappedBy属性     如果两边都未指定mappedBy属性,则EBean会认为双方都可以作为关系的维护端...在ManyToMany关联中,级联删除只会删除关联关系,而不会删除关联实体。

    1.4K100

    MySql中的longtext字段的返回问题「建议收藏」

    最近开发中用到了longtext这种字段。在mysql中该字段的最大长度为4G 如下图所示 开发中遇到的一个问题就是。...例如有个article表,然后我们的页面要将数据以列表的形式展示到前端(只显示几个字段,如作者,标题等等,例如放到table中显示多条记录),但是是将该表中的所有信息都查出来,然后当用户点击某条记录的时候...解决方法: 当然是sql语句的问题了,当像上面这样查询整个列表的时候,可以不查询longtext这个字段,将其他的字段查询出来。...说到这里,还要说一种情况,就是有时候从数据库中查到的数据封装到实体类中,怎么也取不到某个字段的值,就是null。这个时候要看看sql语句,返回的结果集中是否将该字段封装并且映射到该类对应的字段上。...一般情况下都是结果集中没有封装该字段的原因。

    2.1K30

    Java根据前端返回的字段名进行查询数据

    Java根据前端返回的字段名进行查询数据 在现代Web应用开发中,前后端分离已成为一种趋势。...在这种架构下,前端发送HTTP请求给后端,请求中包含需要查询的字段名,后端根据这些字段名进行数据库查询并返回结果。这种方式提高了应用的灵活性和用户体验。...本文将探讨如何在Java后端根据前端返回的字段名进行查询数据。 前言 在传统的Web应用中,后端通常根据硬编码的字段名进行数据库查询。...定义查询接口 首先,我们需要定义一个查询接口,该接口接受字段名作为参数,并返回查询结果。...处理返回结果 根据前端请求的字段名,动态构建结果集。这可以通过反射来实现,根据字段名获取实体对象的属性值。

    1K10

    java 根据前端返回的字段名进行查询数据

    为了实现灵活的查询功能,后端需要根据前端传递的字段名动态构建查询语句。本文将介绍如何在Java中使用Spring Data JPA来实现这一功能。...一、背景介绍 在前后端分离的架构中,前端通常根据用户输入或交互行为,决定需要查询的数据字段。例如,在一个用户管理系统中,前端可能根据用户的不同需求,查询用户的名字、邮箱、或者电话号码等信息。...为了实现这一功能,后端需要能够动态解析这些字段名,并构建相应的查询语句。 二、技术选型 为了实现动态查询,我们可以使用Spring Data JPA。...,返回空条件 } }; } // 用于组合多个查询条件 public static Specification buildCombinedSpecification...{ return userService.findUsersByFields(fieldNames, values); } } 四、总结 通过以上步骤,我们实现了一个根据前端返回的字段名动态查询数据的功能

    96910

    Java 根据前端返回的字段名进行查询数据

    有时候,前端需要根据用户的输入动态地查询数据库中的某些字段。这就需要后端能够灵活处理这些动态字段名,并返回相应的数据。本文将介绍如何在Java中根据前端返回的字段名进行查询数据。...示例场景 假设我们有一个用户管理系统,前端需要能够根据用户输入的字段名(如用户名、邮箱等)来查询用户信息。...Entity public class User { @Id private Long id; private String username; private String email; // 其他字段及...fieldName=email&value=john.doe@example.com 如果数据库中存在相应的用户记录,API将返回该用户的JSON数据。...扩展性:如果查询字段非常多,可以考虑使用更复杂的查询构建器或Elasticsearch等搜索引擎。 总结 本文介绍了如何在Java中使用Spring Boot和JPA根据前端返回的字段名进行动态查询。

    1.3K10

    Spring Cloud Gateway过滤器精确控制异常返回(实战,控制http返回码和message字段)

    工程 用postman发请求试试,请求和响应的详情如下图: 从上图可见,返回码为400,和我们设定的一样,但是message却为空,这是怎么回事呢?...按照咱们的设定,这里应该显示请求参数必须包含user-id字段,看来咱们遇到一只拦路虎了 小小拦路虎 咱们代码中,抛异常的时候设定message内容如下图红框所示,但运行的时候返回的是空字符串,这是怎么回事呢...org.springframework.web.bind.annotation.ResponseStatus; @ResponseStatus(code = HttpStatus.FORBIDDEN, reason = "user-id字段不能为空...至此,两种最简单的方式都完成验证,一般情况下已经满足要求:将错误信息准确传递给调用方 留有瑕疵 聪明的您应该已发现上述两种方案有瑕疵:返回body的格式和字段都是固定的,如果项目中对返回body的内容有严格要求...,例如只允许code、message、data三个字段,其余字段一律不能返回,此时又该怎么办呢?

    74430

    jmeter创建JDBC请求,返回多个字段传递给登录接口

    今天给大家分享的是,【使用jmeter创建JDBC请求,返回多个字段传递给登录接口】。...一、添加JDBC Request并设置变量,获取数据库多个字段值   1、添加好JDBC Connection Configuration并做好数据库连接配置   2、导入mysql驱动jar包   3...请求,用于获取t_tdoctor中的用户总数   1、右键线程组-->添加一个jdbc请求,并设置变量count   2、运行,确认下用户总数 三、添加循环控制器、计数器,实现循环读取库的多个字段信息...并进行嵌套变量引用 ${n}:这里n为计数器得出的值,从1到${count_1},即值为1~12 _V函数: 若${__V(log_name_${n})}中${n}=10, 则${__V(log_name_10)}返回

    83610
    领券