Jas*_*enX 1 django django-models
假设我的Django项目有两个应用程序:App A和app B。这两个应用程序都需要使用10个模型。
创建仅用于模型的另一个App并由App A和导入它是常见的做法app B吗?
我知道我可以在任何定义它们App A,并app B和有一个没有他们从其他应用程序导入,但由于某些原因,我被它困扰。在我看来,两个应用程序均应导入一个“必需模型”应用程序,而不是相互之间导入模型。
我是Django的新手,在这种情况下,常见的做法是什么?
是的,您可以创建一个名为的应用程序utils,在该应用程序中应放置任何常见的模型,序列化器,方法等。
如果需要公用模型,请在以下位置创建它们 utils/models.py
如果您需要公用函数,请创建一个在其中实现这些方法的Mixin类 utils/mixins.py 
我们称之为Mixin Classpython类,您在其中放置了任何类型的方法,以便在视图/模型/序列化器上重新使用它。
此外,这是一个很好的做法在普通的应用程序定义的模型,因为你能避免循环依赖,如果定义modelX在你的app A,那么你导入你的app B,如果因为某些原因,app A需要从一些模式app B,你会得到一个循环导入错误。
关于mixin的例子
我们有一个正常的看法
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类中完成的。
这也适用于模型,序列化器等。
| 归档时间: | 
 | 
| 查看次数: | 199 次 | 
| 最近记录: |