代码之家  ›  专栏  ›  技术社区  ›  Aliquis

Django:它是如何找到用户模型的?

  •  3
  • Aliquis  · 技术社区  · 8 年前

    我有个问题要问你 AUTH_USER_MODEL 在Django: https://docs.djangoproject.com/en/dev/ref/settings/#auth-user-model

    默认值为 auth.User . 然而,实际的模型是 auth.models.User . Django如何找到正确的班级?

    from myapp.models import MyModel . 为什么我不需要 models 身份验证用户 身份验证用户模型 ?

    有人能给我解释一下还是给我看一下使用它的代码?

    1 回复  |  直到 8 年前
        1
  •  3
  •   willeM_ Van Onsem    8 年前

    好吧,你定义模型 models.py 文件 app 模块 app.models . 因此,导入内容如下:

    from app.models import MyModel
    

    INSTALLED_APPS 设置文件列表(通常为 settings.py ),从而构造一个“寄存器”,存储Django模型,并以统一的方式命名它们: app_name.ModelName . 没有理由具体说明 models 在这里,由于模型是在 因此,它只会引入“噪音”。

    apps.get_model [Django-doc]

    from django.apps import apps
    
    apps.get_model('app_name', 'ModelName')

    然后它检查加载模型的寄存器,并返回对模型的引用。

    循环引用 A B 指B and B类 through A (for example with s), then one of the two models is defined first. This means that if you define first, it can not refer to the B类本身,因为那时它还不存在。在Django中,通过一个字符串指定模型。Django系统将首先加载模型,然后 “:通过将字符串替换为对实际模型类的引用来解析引用。