gpt4 book ai didi

django - 两个独立的 Django 应用程序需要相同的模型

转载 作者:行者123 更新时间:2023-12-02 20:59:43 25 4
gpt4 key购买 nike

假设我的 Django 项目有两个应用程序:App Aapp B。这两个应用程序都需要使用 10 个模型。

通常的做法是为模型创建另一个应用程序并由应用程序 A应用程序 B 导入它?

我知道我可以在 App Aapp B 中定义它们,并让没有它们的应用程序从另一个应用程序导入它们,但出于某种原因我被它困扰。对我来说,这两个应用程序都应该导入“所需模型”应用程序,而不是彼此导入模型,这似乎更合乎逻辑。

我是 Django 新手,这种情况下的常见做法是什么?

最佳答案

是的,您可以创建一个名为 utils 的应用程序,您应该在其中放置任何常见模型、序列化器、方法等。

如果您需要公共(public)模型,请在 utils/models.py 中创建它们

如果您需要公共(public)函数,请在 utils/mixins.py 中创建一个实现这些方法的 Mixin 类

我们称之为Mixin Class,这是一个Python类,您可以在其中放置任何类型的方法,以便在 View /模型/序列化器上重用它。

此外,在通用应用程序中定义模型是一个很好的做法,因为您可以避免循环依赖,如果您在 app A 中定义 modelX,那么您将其导入您的 app B 上,如果由于某种原因,app A 需要来自 app B 的一些模型,您将收到循环导入错误。

mixin 示例

我们有正常的 View

class MyView(View):
redirect_field_name = 'redirect_to'
.....

假设我们只想允许登录用户获取它。我们只需要导入登录所需的mixin并添加它

from django.contrib.auth.mixins import LoginRequiredMixin

class MyView(LoginRequiredMixin, View):
login_url = '/login/'
redirect_field_name = 'redirect_to'

检查用户是否登录的逻辑是在 LoginRequiredMixin 类中完成的。

这也适用于模型、序列化器等。

关于django - 两个独立的 Django 应用程序需要相同的模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38922086/

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