zoukankan      html  css  js  c++  java
  • python day100-[day41-45]-2 web-django 深入模型model

    django 深入模型model

    20200316


    • 配置关系型数据库(MySQL)
    在上一个章节中,我们提到了Django是基于MVC架构的Web框架,MVC架构追求的是“模型”和“视图”的解耦合。所谓“模型”说得更直白一些就是数据(的表示),所以通常也被称作“数据模型”。在实际的项目中,数据模型通常通过数据库实现持久化操作,而关系型数据库在过去和当下都是持久化的首选方案.
    
    • 利用Django后台管理模型
    Django框架有自带的后台管理系统来实现对模型的管理。虽然实际应用中,这个后台可能并不能满足我们的需求,但是在学习Django框架时,我们暂时可以利用Django自带的后台管理系统来管理我们的模型,同时也可以了解一个项目的后台管理系统到底需要哪些功能.
    
    • 使用ORM完成模型的CRUD操作
    在了解了Django提供的模型管理平台之后,我们来看看如何从代码层面完成对模型的CRUD(Create / Read / Update / Delete)操作。我们可以通过manage.py开启Shell交互式环境,然后使用Django内置的ORM框架对模型进行CRUD操作.
    

    • Django模型最佳实践
    1.正确的为模型和关系字段命名。
    2.设置适当的related_name属性。
    3.用OneToOneField代替ForeignKeyField(unique=True)。
    4.通过“迁移操作”(migrate)来添加模型。
    5.用NoSQL来应对需要降低范式级别的场景。
    6.如果布尔类型可以为空要使用NullBooleanField。
    7.在模型中放置业务逻辑。
    8.用<ModelName>.DoesNotExists取代ObjectDoesNotExists。
    9.在数据库中不要出现无效数据。
    10.不要对QuerySet调用len()函数。
    11.将QuerySet的exists()方法的返回值用于if条件。
    12.用DecimalField来存储货币相关数据而不是FloatField。
    13.定义__str__方法。
    15.不要将数据文件放在同一个目录中。
    
    • 查询参考
    1. exact / iexact:精确匹配/忽略大小写的精确匹配查询
    2. contains / icontains / startswith / istartswith / endswith / iendswith:基于like的模糊查询
    3. in:集合运算
    4. gt / gte / lt / lte:大于/大于等于/小于/小于等于关系运算
    5. range:指定范围查询(SQL中的between…and…)
    6. year / month / day / week_day / hour / minute / second:查询时间日期
    7. isnull:查询空值(True)或非空值(False)
    8. search:基于全文索引的全文检索
    9. regex / iregex:基于正则表达式的模糊匹配查询
    
  • 相关阅读:
    Mybatis框架学习笔记一(基于注解的配置)
    HDU 1686 Oulipo (KMP模板题)
    监控Windows性能指标
    Locust设置检查点
    《TCP/IP网络编程》读书笔记
    基于单向链表的队列的实现
    windows下基于异步通知IO模型的回声服务器和客户端的实现
    c语言实现迭代器iterator
    c语言hash表的实现
    c语言双向链表的实现
  • 原文地址:https://www.cnblogs.com/damahuhu/p/12504475.html
Copyright © 2011-2022 走看看