简单示例实现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