在某些项目中,我发现应用程序的模型定义如下:
from django.db import models
class CustomUser(models.Model):
user = models.ForeignKey('auth.User')
我的问题是'auth.User'来自哪里?
是从django.contrib.auth导入的。但是,用户不在auth/__init__.py
档案中。
django如何知道,在auth/models.py
文件中找到用户?
答案 0 :(得分:3)
Django总是在应用程序中假设一个模型模块。所以这意味着django将寻找auth.models并在其中搜索名为User
的类。查询从add_lazy_relation
中的django/db/models/fields/related.py
函数开始。正如您在源代码中看到的,当传递一个字符串时,它会为您提供三个选项,您可以传递'self'
这将是与当前模型的关系,或者您可以传递'MyModel'
来查找{ {1}}当前应用中模型模块内的类。最后,您可以通过'MyModel'
查找'AnotherApp.AnotherModel'
。如果好奇,模型查找功能在'AnotherApp.models.AnotherModel'