zoukankan      html  css  js  c++  java
  • django框架的ORM模型优缺点

    1,django中ORM只能通过ForeignKey定义多对一的关系,不能显式地定义一对多关系;

    特别是读代码时,第一个类定义完全没法提示一对多的关系。我必须要看到了第二个类定义,才能搞明白两个模型之间的关系。真希望有一种显式说明关系的办法,降低读代码时的认知负担。

    2.聚合:

      django进行聚合查询的时候,orm在表达对GROUP BY上表示很无奈,只有annotate()和aggressive()这两种查询方法,但是对于一些复杂的查询就很魔幻。

    3.查询:

    Django在通过一些方法来实现,绝大多数返回的是Django自定义的queryset的迭代器,然而python会对这些作懒惰求值,然而这些方法并不会真正的操作数据库,

    即通过命名方式来控制查询行为。我看过有的ORM是用lambda的形式来表达WHERE条件,还有的会做一个类似于contains()的方法,都要比Django ORM的方式好看。如果是跨表查询,Django的方式就更丑了:

    Customer.objects.filter(company__name__contains="xxx")

    无限的双下划线啊……

    总的来说,Django ORM在实现基础的数据库操作方面没问题。但如果需要构建复杂的SQL语句,与其在Django ORM里绕来绕去,还不如直接用原始的SQL语句。这个是我最强烈的一个感受。

  • 相关阅读:
    7.19 repeater的用法:
    7.18 内置对象
    7.17 三级联动 控件及JS简单使用
    7.15 简单控件 以及 复合控件
    7.14 Repeater
    7.14 ASP.NET介绍 基础
    phpcms图文总结(转载)
    phpcms图文总结(转)
    商业php软件的应用
    php前段时间复习
  • 原文地址:https://www.cnblogs.com/zhuyafeng/p/9498637.html
Copyright © 2011-2022 走看看