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:基于正则表达式的模糊匹配查询
原文地址:https://www.cnblogs.com/damahuhu/p/12504475.html