作者laputaflutin (很恐怖,不要问)
看板Python
标题[问题] Django多个app共用model
时间Sun Mar 25 23:02:05 2018
各位Python版版友好,想请问在django专案底下,如何组织那些
提供给多个app共用的model?
django预设专案结构长这样,这种分区式(divisional)的结构对於
建构那些独立的模组很方便,可以做到随插即用。
project_root/
|-------/app1/models.py
|-------/app2/models.py
|-------/project_name/
|-------/manage.py
然而,最近我在写的应用程式,比较偏向多个应用模组都会使用到
相同的几个 "共用" model,之前写flask时,我只需要把专案结构改成:
project_root/
|-------/models/
|-------/app1/
|-------/app2/
这种偏向功能式(functional)结构即可,但是当使用django时,
我会碰到以下的错误讯息:
RuntimeError: Model class models.employee.Employee doesn't declare
an explicit app_label and isn't in an application in INSTALLED_APPS.
目前只能别无选择,import其他app内的model,但这显然不是一个
好方法,完全丧失application各自独立的优点,後续也难以维护,
看到几本django的书,讨论这部分的比较少,想请问各位版友,有没有
更好组织专案的方法。
谢谢
:wq
--
◥◣▂▃▄▄▃▂◢
◤ 塑化剂?
有加啊 ▼ ▃▂▃▂ >〈
▼/ ╲▼ 猴死囝仔, ▼▂◣◢▂▼ ^
▼/ ● ● \▼ 为什麽之前没说?
连我都不敢用的东西 ◤ . . ◣◤◣
◤ | | ◥因为你没问啊 你居然用这麽多! ▊\▇〔╮▇◢6◤
\ ︶︶ / ▆◣
早知道就用了 ▎ /◤▂▄◤
【黑心厂商】 ψhacoolman 【市民代表】 ◢ ◥ ▇ ◢◢ ◣
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.194.133.160
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1521990140.A.D9B.html
1F:→ Panthalassa: 一个笨想法:能不能一个空 app 专门给别人 model ? 03/25 23:36
2F:→ djshen: 哪种程度的共用? 直接fk? 还是只要可以用API就好 03/25 23:52
3F:→ frank910138: 用个main app 当作常用的model? 03/26 00:29
4F:→ laputaflutin: 回一楼:这种方法我也有想过...可是感觉很怪,这样 03/26 00:55
5F:→ laputaflutin: 感觉所有的app都要依赖这个app,但是其实我只是想要 03/26 00:55
6F:→ laputaflutin: model共用阿... 03/26 00:56
我解释一下个人觉得怪在那里,model代表的是db的各个table,就我的
理解来说,AP层与db层关系应该尽可能抽象,不同的ap存取table的行为
完全独立,即使存取的都是同一个table,不应该被锁在django application
的结构内,用一个main app不是不行,但是我怎麽想都应该要有个更好的
解决方法阿XD。
7F:→ laputaflutin: 回二楼:直接fk,以及继承都可能用到,如果只是抽象 03/26 00:57
8F:→ laputaflutin: model,可以直接引用,但是如果是proxy就无法了 03/26 00:57
project_root/
|------model_base/ (抽象model)
|------people_base
|------app1/models.py
|------app2/models.py
在抽象model的情况下,这种组织方法OK,但如果使用的是代理(proxy)
则会报错。
※ 编辑: laputaflutin (123.194.133.160), 03/26/2018 01:15:18