1

最近まで、私が取り組んでいるプロジェクトでは、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によると、すべてが正しく見えます。

なぜこれが失敗するのか説明できますか? (私が遭遇した代替ソリューションはたくさんありますが、ハックを採用するよりも、可能であればこれを修正することをお勧めします。)

4

1 に答える 1