博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简单示例实现django的orm
阅读量:6895 次
发布时间:2019-06-27

本文共 1108 字,大约阅读时间需要 3 分钟。

hot3.png

简单示例实现django的orm

在django中如果我们定义了一个User的model。就可以使用User.objects.create()等方法.那么在django的源码中是如何实现这种写法的呢?

下面代码从最外层简单完成了django ORM的调用方法实现.

ps:下面的代码只是实现了django的最外面调用实现而已.

class Manager:    # manager类    def create(self):        """        用法:User.objects.all()        """        return "django orm get function"    def all(self):        """        用法:User.objects.all()        """        return "django orm all function"class ModelBase(type):    def __new__(cls, name, bases, attrs):        if name == "Model":            attrs["objects"] = Manager()        return type.__new__(cls, name, bases, attrs)# Model类class Model(object, metaclass=ModelBase):    pass# 这个一般在django的models.py中间中的写法# 实现django中的objects覆盖写法class UserManager(Manager):    def create(self):        return "django中可以用objects覆盖原来的orm方法"class User(Model):    """下面是一般model字段定义,可忽略"""    objects = UserManager()# 普通的django ORM用法class Personal(Model):    """下面是一般model字段定义,可忽略"""    passprint(User.objects.create())# django中可以用objects覆盖原来的orm方法print(Personal.objects.create())# django orm get function

转载于:https://my.oschina.net/u/2474096/blog/2993742

你可能感兴趣的文章
No module named 'MySQLdb' python3.6 + django 1.10 + mysql 无法连接
查看>>
使用nginx搭建https服务器 (转)
查看>>
Linux磁盘分区管理--ext2和ext3文件系统逻辑结构分析
查看>>
玩转智能路由器-WRTnode添加显示支持
查看>>
Centos 6.5 下搭建Mysql 5.6双主模式
查看>>
It is indirectly referenced from required .class files
查看>>
Guava学习笔记:EventBus
查看>>
为何要用ERP
查看>>
Nginx之配置HTTPS站点
查看>>
STL——set
查看>>
TCP/IP中MSL详解
查看>>
JavaWeb学习总结(四十九)——简单模拟Sping MVC
查看>>
tar命令的使用
查看>>
linux环境变量,cp,mv命令,more,less,cat,tail,head,的使用
查看>>
ubuntu16.04下docker修改配置文件不生效解决办法
查看>>
msyql 的半同步复制
查看>>
C语言查漏补缺——const
查看>>
Druid MiddleManager Config 设置(默认只允许2个任务)
查看>>
jQuery插件
查看>>
数字3为分隔
查看>>