假设我的Django项目有两个应用:App A
和app B
。两个应用都需要使用10个型号。
通常的做法是为模型创建另一个应用,并由App A
和app B
导入吗?
我知道我可以在App A
和app B
中定义它们,并让没有它们的那些从其他应用程序中导入它们,但由于某种原因,我对它感到困扰。对我而言,两个应用程序都应该导入“必需模型”应用程序,而不是彼此的模型。
我是Django的新手,这种情况下的常见做法是什么?
答案 0 :(得分:4)
是的,你可以创建一个名为utils
的应用程序,你应该放置任何常见的模型,序列化器,方法等。
如果您需要公共模型,请在utils/models.py
如果你需要公共函数,请在utils/mixins.py
我们调用Mixin Class
,这是一个python类,您可以在其中放置任何类型的方法,以便在您的views / models / serializer上重用它。
此外,在常见应用中定义模型是一种很好的做法,因为如果在modelX
中定义app A
,则可以避免循环依赖,然后将其导入{{1}如果由于某种原因,app B
需要app A
中的某个模型,则会出现循环导入错误。
关于mixin的示例
我们有一个正常的观点
app B
假设我们希望只允许已登录的用户获取它。我们只需要导入登录所需的mixin并添加它
class MyView(View):
redirect_field_name = 'redirect_to'
.....
检查用户是否已登录的逻辑是在LoginRequiredMixin类中完成的。
这也适用于模型,序列化器等。