当前位置: 首页 > 网络应用技术

如何控制Django序列化结果(Django的背部序列化)

时间:2023-03-06 22:13:47 网络应用技术

  本文的主要首席技术官将介绍如何控制Django序列化结果和Django的背部序列化的相关内容。我希望这对每个人都会有所帮助。让我们来看看。

  本文目录清单:

  django模型,QuerySet序列化为JSON错误5。Django查询通过QUERY数据库序列化获得的结果序列化到JSON字符串,以求解Django“ Laziness”的基本方法

  现在,我们解决此问题的方法是“预载”。本质上,您要预先警告django orm,您必须一遍又一遍地告诉它相同的无聊指令。在上面的示例中,很容易添加此句子在DRF开始之前:

  querySet = queryset.prefetch_reled('orders')

  当DRF调用上述客户的相同序列化时,情况就是这样:

  获取所有客户(执行两个回合数据库操作,第一个是获取客户,第二个是获得相关客户的所有相关顺序。)。

  对于第一个客户,获取其订单(无需访问数据库,我们在上一步中获得了所需的数据)

  对于第二个返回客户,获取订单(无需访问数据库)

  对于第三个返回客户,获取订单(无需访问数据库)

  对于第四个返回客户,获取订单(无需访问数据库)

  对于第五返回客户,获取订单(无需访问数据库)

  对于第六返回客户,获取订单(无需访问数据库)

  您意识到您可以有很多客户,并且不再需要继续等待数据库。

  实际上,在步骤1中请求Django Orm的“准备”,该步骤1可以在本地高速缓存数据中提供步骤2+所需的数据,并具有先前数据库,从本地缓存数据中读取数据基本上是瞬时的,因此我们有当我们有很多客户时,获得了巨大的性能加速。

  解决Django REST框架的性能的标准化模式

  我们已经确定了一种通用模式,可以优化Django REST框架的性能,也就是说,每当序列化查询嵌套字段时,我们添加了一个新的@StaticMethod,名为Setup_eager_loading,如下:

  班级CobuliteRializer(Serializers.ModelSerializer):

  orders = orderSerializer(许多= true,read_only = true)

  def setup_eager_loading(cls,querySet):

  “”“”执行不加载数据。“”“”“”“”“”“”

  querySet = queryset.prefetch_reled('orders')

  返回QuerySet

  这样,无论您在何处使用此序列化,您只需要在调用serialization之前只调用setup_eager_loading,就像这样::

  customer_qs = customer.objects.all()

  customer_qs = cusiteerializer.setup_eager_loading(customer_qs)#设置急切的加载以避免n+1选择

  post_data = cusiteerializer(customer_qs,多个= true).data。

  或者,如果您有Apiview或Viewset,则可以在get_queryset方法中调用setup_eager_loading ::

  def get_queryset(self):

  querySet = cunituter.objects.all()

  #设置急切的加载以避免n+1选择

  querySet = self.get_serializer_class()。setup_eager_loading(querySet)

  返回QuerySet

  1.创建一个新的Jupyter笔记本电脑文档。

  2.定义列表并打印以查看结果。list= [3,9,-7] prop(列表)。

  3.将一个数字添加到list.list.append(10)打印(列表)。

  4.还可以添加字符串。list.Append(“ String 123”)打印(列表)。

  5.列表可以包含其他列表。list.append([-3,-4])打印(列表)。

  6.如果要删除最后一个列表的值,则可以像this.list.pop()prop()一样处理它。

  1.模型字段

  从模型的定义可以看出,这些环境和发布的这些领域可能没有

  第二,过滤器

  六个,邮递员测试

  使用该序列化函数,您可能需要对QuerySet和单个模型对象进行一定数量的补充序列化。

  我个人这样做:遍历QuerySet,将单个对象转换为字典,然后将每个字典对象添加到一个空列表中,然后使用JSON.DUMPS(dictobject_list)转换JSON字符串。

  基本构建的对象也可以解决其他语言的JSON对象转换。

  class goodsListView(查看):

  如果您遇到无法以JSON格式执行的格式,例如UUID,则需要执行str()函数转换

  结论:以上是为每个人汇编的主要CTO注释的所有内容,以控制Django序列化的结果。感谢您阅读本网站的内容。我希望这对您有帮助。不要忘记找到序列化结果的相关内容。