2013-03-31 29 views
1

在一些项目中,我发现,该应用程序的模型定义是这样的:django,'auth.User'来自哪里?

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

它来自settings.py,你需要定义你自己的扩展用户 – catherine

+0

你能展示应用程序的源代码吗? –

回答

2

Django总是在应用程序内部使用模型模块。所以这意味着django会查找auth.models,并在里面搜索名为User的类。查找在django/db/models/fields/related.pyadd_lazy_relation函数中开始。正如你在源代码中看到的那样,当传递一个字符串时,它会给你三个选项,你可以通过'self'这将与当前模型有关系,或者你可以通过'MyModel',它将在当前的模型模块中寻找'MyModel'类应用程序。最后,你可以通过'AnotherApp.AnotherModel'这将寻找'AnotherApp.models.AnotherModel'。如果好奇,模型查找功能实现在django.db.models.get_model