首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django - Models外观

Django - Models外观
EN

Stack Overflow用户
提问于 2012-08-18 22:23:32
回答 1查看 1.2K关注 0票数 1

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

我曾经有过这样的结构:

代码语言:javascript
复制
# models.py

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

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

而现在我有了这个:

代码语言:javascript
复制
# 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

当我写下它的时候,这是非常有趣的,因为它允许我分离功能的定义,而不会丢失任何一个。但是,当我尝试测试新的数据模型时,我感到非常困惑。

代码语言:javascript
复制
$ 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'>

这是怎么回事!?当我请求“包装器”类时,为什么我得到的是模型类?

当然,这保留了模型的所有属性,但显然缺少包装器中定义的所有方法。

我希望你能帮助我,因为这对我来说完全是胡说八道。谢谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2012-08-18 22:32:03

the documentation再往下一点就是"proxy models"。你想怎么做就怎么做。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12019336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档