1

在一些项目中,我发现应用的模型定义是这样的:

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文件中查找用户的?

4

1 回答 1

3

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

于 2013-03-31T21:18:35.870 回答