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ます。ソースでわかるように、文字列を渡すと 3 つのオプションが与えられます。'self'現在のモデルとの関係になるものを渡すか、現在のアプリのモデル モジュール内のクラス'MyModel'を探すものを渡すことができます。'MyModel'そして最後に、'AnotherApp.AnotherModel'which を探すパスを渡すことができます'AnotherApp.models.AnotherModel'。興味がある場合は、モデル ルックアップ機能が実装されています。django.db.models.get_model

于 2013-03-31T21:18:35.870 に答える