最近まで、私が取り組んでいるプロジェクトでは、1 つのメガ UserProfile を使用して、2 種類のユーザーのすべてのプロファイル データを処理していました。当然、これは厄介であり、リファクタリングの時期が来ました。
モデルをリファクタリングしようとして、モデルをリクエスターとファンダーに分割し、両方をサブクラス化する抽象 UserProfile モデルを作成しました。
class UserProfile(models.Model):
class Meta:
abstract = True
user = models.OneToOneField(User)
def __unicode__(self):
return unicode(self.user)
class Requester(UserProfile):
def requested(self, event):
"""Check if a user requested an event."""
return self == event.requester
class Funder(UserProfile):
osa_email = models.EmailField(null=True) # The e-mail of the contact in OSA
mission_statement = models.TextField(max_length=256)
そして、settings.py ファイルで、AUTH_PROFILE_MODULE を調整しました。
AUTH_PROFILE_MODULE = "app.UserProfile"
問題は、「User.get_profile()」を使用するページにアクセスすると壊れて、次のように報告されることです。
Unable to load the profile model, check AUTH_PROFILE_MODULE in your project settings
ここで何が起こっているのかよくわかりません。docsによると、すべてが正しく見えます。
なぜこれが失敗するのか説明できますか? (私が遭遇した代替ソリューションはたくさんありますが、ハックを採用するよりも、可能であればこれを修正することをお勧めします。)