Skip to content

Latest commit

 

History

History
38 lines (32 loc) · 1.96 KB

5.md

File metadata and controls

38 lines (32 loc) · 1.96 KB

上一节 根据自己的需求删减django中间件及apps
下一节 定制自己的基础api

定制自己的基础model

在开发过程当中,我们需要定义很多model,但是这些model其实会有很多公共字段及方法,因此定义基础model,方便管理.
比如,现在我们只要插入的数据库中的数据就几乎没有物理删除的,一般都是设置一个字段代表是否删除.
为什么不物理删除这里就涉及到可能因为删除数据导致一些错误(代码逻辑不严谨).
或者很多时候用户虽然删除了,但是我们就是想保留用户数据.
基于这样的一个原则,所有表就都有一个共同的字段了,那么肯定不在所有model中单独设置,一定是基于一个共同的基类来实现.

tag: 0.0.5

后端

涉及文件

base/models.py

代码

base/models.py:
BaseModel即为基础model类,我在设计表时,所有表我都希望有,以下三个字段:

dt_create = models.DateTimeField('创建时间', auto_now_add=True)
dt_update = models.DateTimeField('更新时间', auto_now=True)
is_deleted = models.BooleanField('是否删除', default=False)

同时,我筛选时,我要自动过滤删除的对象. 因此定义BaseManager类,在get_queryset方法中指定需要is_deleted=False的对象.
然后在基类中,重新设置objects,如下:

objects = BaseManager()
src_objects = models.Manager()

平时不需要已经删除的对象时,就使用objects,如果需要查找删除对象时,使用src_objects.

上一节 根据自己的需求删减django中间件及apps
下一节 定制自己的基础api