这篇文章将为大家详细讲解有关django中不同应用共用数据模型的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
django的每个应用目录下,都有自己的模型。py文件。
原则上,每个程序涉及的数据库,都会定义在这个文件里。
但是,有的数据库,涉及到多个应用应用,不是很方便放在一个单独的应用里。
这时,我往往会新建一个公共应用程序,然后,将这个目录的modles.py里放置这些数据库,
可是,这样又显得太分散了。
所以,有时也会考虑单独新建一个cmdb这样的应用,将所有模型数据库文件放在这下个应用定义。
那这样操作,会带来一个问题,就是默认django源代码时写死的了,一个应用程序只能有一个models.py文件。
如果在应用下放多个不同的models.py文件(用前缀或后缀区分),
使用python管理。py makemigrations命令时,django不能感知到其它的models.py文件。
而我当然想将不同的应用分不同的models.py文件放了。
那如何扩展呢?
以下是如何实现的:
1,删除cmdb的应用目录下默认的models.py文件。
2,在cmdb的应用目录下新建一个模型文件夹。
3,在模型文件夹时,按不同的应用,建立不同的models.py文件(用前缀或后缀区分)。
4,在模型文件夹下新建一个__init__ . py文件,将所有的此目录下的模型。py里的模型导入。
5,再次运行python管理。py makemigrations, django就能感知到这些文件了。
6,写admin.py时,导入模型文件夹下的内容,即可。
,在此,再总结一下admin.py里的@admin。注册装饰,同时应用在多个模型上时的写法。
@admin.register (MiddleImage, BaseImage,还以为,DeployImage, DeployConfig) class BaseImage (admin.ModelAdmin): ,才能通过 class MiddleImage (admin.ModelAdmin): ,才能通过 class DeployImage (admin.ModelAdmin): ,才能通过 class DeployConfig (admin.ModelAdmin): ,,,通过
关于django中不同应用共用数据模型的方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。