Django - 模型外观

时间:2012-08-18 14:23:32

标签: python django model python-2.7

我正在尝试为我的Django项目开发服务器端API,但是我想出了models.py文件中每个模型声明中定义的一大堆方法。所以我想创建一种Façade类来处理API方法,只留下模型的属性 我曾经有过这样的结构:

# models.py

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

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

现在我有了这个:

# 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正在进行中!?当我要求“包装”时,为什么我会得到模型类呢? 当然,这保留了模型的所有属性,但显然缺少包装器中定义的所有方法 我希望你能帮助我,因为这对我来说完全是胡说八道。谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

the documentation中稍远一点"proxy models"。那些会按你的意愿做。