Django的 - 模型外墙(Django - Models Façade)

2019-10-17 03:31发布

我想发展我的Django项目的服务器端API,但我已经有一大堆在models.py文件中每一个模型声明中定义的方法上来。 所以我想创造一种外观类来处理API的方法,使模型只与他们的财产。
我曾经有过这样的结构:

# models.py

class MyModel(models.Model):
    prop1 = ...
    prop2 = ...

    def f1(self):
        pass
    def f2(self):
        pass

虽然现在II有这样一条:

# models.py

class MyModel(models.Model):
    prop1 = ...
    prop2 = ...

# wrappers.py

from myapp import models


class MyModel(models.MyModel):

    def f1(self):
        pass
    def f2(self):
        pass

这是非常有趣的,而我把它写下来,因为它让我不失他们没有分开的功能定义。 然而,当我试图测试新的数据模型,我很困惑。

$ python manage.py shell
Python 2.7.3 (default, Apr 20 2012, 22:44:07) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from myapp.wrappers import MyModel
>>> MyModel
<class 'MyProject.myapp.models.MyModel'>

WTF是怎么回事!? 为什么我得到的模型类,当我要求的“包装”一个呢?
当然,这保持模型的所有特性,但显然缺乏所有的在包装中定义的方法。
我希望你能帮助我这个,因为它是一个完全胡说八道我。 谢谢您的帮助。

Answer 1:

有一点,在往下走的文件是“代理模式” 。 只要你想的就行了。



文章来源: Django - Models Façade