django中不同app如何共用数据模型
原标题:django中不同app如何共用数据模型
文章图片
django的每个app目录下 , 都有自己的models.py文件 。
原则上 , 每个app涉及的数据库 , 都会定义在这个文件里 。
但是 , 有的数据库 , 涉及到多个app应用 , 不是很方便放在一个单独的app里 。
这时 , 我往往会新建一个publicapp , 然后 , 将这个目录的modles.py里放置这些数据库 ,
可是 , 这样又显得太分散了 。
所以 , 有时也会考虑单独新建一个cmdb这样的app , 将所有models数据库文件放在这个app下定义 。
那这样操作 , 会带来一个问题 , 就是默认django源代码时写死了 , 一个app只能有一个models.py文件 。
如果在app下放多个不同的models.py文件(用前缀或后缀区分) ,
使用pythonmanage.pymakemigrations命令时 , django不能感知到其它的models.py文件 。
而我当然想将不同的应用分不同的models.py文件放了 。
那如何扩展呢?
以下是如何实现的:
1 , 删除cmdb的app目录下默认的models.py文件 。
2 , 在cmdb的app目录下新建一个models文件夹 。
3 , 在models文件夹时 , 按不同的应用 , 建立不同的models.py文件(用前缀或后缀区分) 。
4 , 在models文件夹下新建一个__init__.py文件 , 将所有的此目录下的models.py里的model导入 。
5 , 再次运行pythonmanage.pymakemigrations , django就能感知到这些文件了 。
6 , 写admin.py时 , 导入models文件夹下的内容 , 即可 。
在此 , 再总结一下admin.py里的@admin.register装饰 , 同时应用在多个models上时的写法 。
@admin.register(BaseImage,MiddleImage,DeployImage,DeployConfig)classBaseImage(admin.ModelAdmin):passclassMiddleImage(admin.ModelAdmin):passclassDeployImage(admin.ModelAdmin):passclassDeployConfig(admin.ModelAdmin):pass【django中不同app如何共用数据模型】原文至:https://www.py.cn/kuangjia/django/11541.html
- 中年|厦门市内大型公园,春季繁花盛开,还有儿童游乐区,全部免费开放!
- 中年|湖北一公园被4A砸中,现有固定资产1000余万,被称十堰“后花园”
- 老年|中国古塔揽胜——辽宁阜新!
- 中年|春天,去新疆图开沙漠尽情“嗨”!
- 梦中|十里芳华万里飘香,顺德有场“盛大的花事”邀你来赏花
- 中年|一个人的旅行,那就来泸沽湖吧
- 中年|石林中的探岳与探岳中的你
- 步行街|国内唯一面朝大海的步行街:厦门中山路的滨海风情,实在让人陶醉
- 老年|德兴市境内山水如画,被评为“中国天然氧吧”创建地区
- 中国2月末外汇储备32019.9亿美元,环比减少56.8亿美元
