1

我正在尝试为我的 Django 项目开发一个服务器端 API,但我想出了一大堆在 models.py 文件中的每个模型声明中定义的方法。所以我想创建一种外观类来处理 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在这里发生!?当我要求“包装器”代替时,为什么我会得到模型类?
当然,这保留了模型的所有属性,但显然缺少包装器中定义的所有方法。
我希望你能帮助我,因为这对我来说完全是胡说八道。谢谢您的帮助。

4

1 回答 1

2

文档中再往下一点是“代理模型”。那些会做你想做的。

于 2012-08-18T14:32:03.213 回答