gpt4 book ai didi

django - 如何在多个应用程序之间使用模型?

转载 作者:行者123 更新时间:2023-12-04 21:59:09 26 4
gpt4 key购买 nike

我正在构建一个 Django 应用程序,我被要求拆分 models.py 并将生成的模型放在“模型”文件夹中。我这样做了,效果很好。
然后我被要求将模型文件夹移动到项目级别,以便其他应用程序可以使用模型。
文件结构如下所示(取自 Django 教程):

mysite
mysite
polls
db.sqlite3
manage.py
models <- Have the poll app's models in there?

然而,我所读到的一切都表明这是非常不受欢迎的,模型应该存在于应用程序级别,而不是项目级别。

那么,处理这个问题的最好方法是 Django —— 让模型被多个应用程序使用?我读过的一些内容建议在应用程序之间导入模型或更改模型元类 db_table 选项。

不过,我发现的大部分帖子都来自 5 年前,所以我不确定当前最好的方法是什么。

如果我将模型导入新应用程序,然后对它们/执行某些操作,它们是否指向与导入它们的应用程序相同的数据库,还是为新应用程序创建的新数据库?

谢谢您的帮助。非常感激。

最佳答案

我也在想同样的事情,看到你从 reddit 得到了不错的答案,但我想我会投入 2 美分。

您可以将模型重构为单独的应用程序。

tl;博士

关于你的情况的一些假设

  • 起初,模型从models.py中拆分成单独的python文件,以提高可维护性
  • 将模型上移到项目级别,以最大程度地减少应用程序更改对模型的影响(反之亦然)

  • 举个例子:
    mysite
    ├── polls
    │ ├── __init__.py
    │ ├── admin.py
    │ ├── apps.py
    │ ├── migrations
    │ │ └── __init__.py
    │ ├── models
    │ │ └── __init__.py
    │ │ └── foo.py
    │ │ └── bar.py
    │ ├── tests.py
    │ └── views.py
    ├── db.sqlite3
    ├── manage.py
    └── mysite
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

    我们有 2 个模型(foo 和 bar),我们出于某种逻辑原因将它们分开。

    恕我直言,我认为整体可维护性可以通过将 foo 和 bar 模型放在他们自己的应用程序中而受益,如果它们满足 2 个标准
  • 它们完全不同
  • 它们被多个应用程序使用

  • 此时,模型可以像以前一样被您站点中的其他应用程序导入,但布局看起来更像 Django 最佳实践

    新版面:
    mysite
    ├── polls
    ├── foo
    │ └── models.py
    │ └── etc...
    ├── bar
    │ └── models.py
    │ └── etc...
    ├── etc...

    关于django - 如何在多个应用程序之间使用模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36879524/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com