Django Models虚拟化提取Models公共的功能

Posted inns

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django Models虚拟化提取Models公共的功能相关的知识,希望对你有一定的参考价值。

1、需求

Django的Models定义了数据库的表,大家使用过程中很多表肯定有许多公共的操作。那么可以将一些公共的操作封装起来,就不需要在每一张表中再来重复的定义和使用了。

 

2、定义

还是从models中继承,定义一个JsonMode基类

class JsonMode(models.Model):

 

2.1 虚拟化

#Model基类,不会去创建数据表
#默认按照时间逆序排列
class Meta:
    abstract = True

 

2.2 公共字段,例如排序

#Model基类,不会去创建数据表
   #默认按照时间逆序排列
   class Meta:
       abstract = True
       ordering = [\'-ModifyTime\',\'-CreateTime\',\'-id\']

 

 

3、公共函数

如下图,节选了部分函数,此函数有普通的入参self和其他参数

image

 

3.1 还未定义的字段操作

特别注意的是,根据列名要进行数据字段的操作,一般的models如下操作即可

self.name =  ‘这是一个测试’

 

在JsonMode中,colname由参数传递进来,则可以使用Python的object的属性设置函数和获取函数setattr和getattr

#根据列名,保留旧值,新值暂时放到末尾,待上传文件成功之后,回调再刷新
           setattr(self, colName,getattr(self,colName,\'\') + GlobalVar.InterStr +  filename[0])

 

3.2 Models的方法调用

models的方法调用,直接使用self调用即可,如self.save()


 

 

4、子类实现

 

如下图,filteTemp继承JsonMode,调用父类的函数使用super(fileTemp,serl).function即可

image

以上是关于Django Models虚拟化提取Models公共的功能的主要内容,如果未能解决你的问题,请参考以下文章

在 django 中获取属性

Django模型,models

Django 搭建博客网站-task03:Models的编写

限制每组 n 个结果 - Django 查询集

Django的models实现分析

django models 关系