我正在尝试为我的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'>这是怎么回事!?当我请求“包装器”类时,为什么我得到的是模型类?
当然,这保留了模型的所有属性,但显然缺少包装器中定义的所有方法。
我希望你能帮助我,因为这对我来说完全是胡说八道。谢谢你的帮助。
发布于 2012-08-18 22:32:03
在the documentation再往下一点就是"proxy models"。你想怎么做就怎么做。
https://stackoverflow.com/questions/12019336
复制相似问题