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