• 技术文章 >Python框架 >Django

    django中不同app如何共用数据模型

    silencementsilencement2019-08-17 13:32:19原创6410

    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
    上一篇:pycharm如何创建django项目 下一篇:django path和url的区别

    相关文章推荐

    • pycharm如何创建django项目

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网