さまざまな複雑な理由から [1]、Django User クラスに追加のプロパティを追加する必要があります。
これを行うには、プロファイルも「継承」方法も使用できません。( Django でカスタム フィールドを使用して User モデルを拡張するのと同様)
だから私がやっていることは、私の local_settings ファイルに User クラスを含めることです。そこにプロパティを追加します。
おそらく驚くべきことに、これは多くの場合に機能するようです。しかし、UserManager.create_user() から新しいユーザーを作成するときではありません。したがって、 UserManager.create_user() メソッドの代わりにパッチを当てる必要があります。このソース (contrib.auth.models.py 内) を見ると、ユーザーを作成するために使用するクラスが、直接参照されるのではなく、UserManager.model というプロパティに保持されていることがわかります。
行はこれです:
user = self.model(None, username, '', '', email.strip().lower(), 'placeholder', False, True, False, now, now)
問題は、この self.model (User クラスへの参照が含まれていると思われます) が、パッチを適用したバージョンではないように見えることです。
それで、UserManagerの場合、このself.modelがどこに設定されているか知っている人はいますか? そして、その時点でコードが local_settings を通過していないため、 User クラスへのパッチが存在しないと仮定するのは正しいでしょうか? そして、クラスにパッチを当てるためのより良い場所があれば?
乾杯
フィル
【1】好奇心を満たす。User クラスがデータベース内の別の既存のテーブルを使用するようにする必要があります。これには、追加のフィールドと制約があります。
更新:将来の参考のために、プロキシモデルは、Djangoが私が必要とするものをサポートする方法であるようです:http://code.djangoproject.com/ticket/10356