2013-03-31 72 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