网站建设资讯

NEWS

网站建设资讯

django中不同app共用数据模型的方法-创新互联

创新互联www.cdcxhl.cn八线动态BGP香港云服务器提供商,新人活动买多久送多久,划算不套路!

成都创新互联服务项目包括玉山网站建设、玉山网站制作、玉山网页制作以及玉山网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,玉山网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到玉山省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

这篇文章将为大家详细讲解有关django中不同app共用数据模型的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

django的每个app目录下,都有自己的models.py文件。

原则上,每个app涉及的数据库,都会定义在这个文件里。

但是,有的数据库,涉及到多个app应用,不是很方便放在一个单独的app里。

这时,我往往会新建一个public app,然后,将这个目录的modles.py里放置这些数据库,

可是,这样又显得太分散了。

所以,有时也会考虑单独新建一个cmdb这样的app,将所有models数据库文件放在这个app下定义。

那这样操作,会带来一个问题,就是默认django源代码时写死了,一个app只能有一个models.py文件。

如果在app下放多个不同的models.py文件(用前缀或后缀区分),

使用python manage.py makemigrations命令时,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,再次运行python manage.py makemigrations,django就能感知到这些文件了。

6,写admin.py时,导入models文件夹下的内容,即可。

 在此,再总结一下admin.py里的@admin.register装饰,同时应用在多个models上时的写法。

@admin.register(BaseImage, MiddleImage, DeployImage, DeployConfig)
class BaseImage(admin.ModelAdmin):
    pass
class MiddleImage(admin.ModelAdmin):
    pass
class DeployImage(admin.ModelAdmin):
    pass
class DeployConfig(admin.ModelAdmin):
    pass

关于django中不同app共用数据模型的方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


网站题目:django中不同app共用数据模型的方法-创新互联
本文路径:http://cdweb.net/article/dceipg.html