プロファイル、私はこのように私のUserProfileを開始しました。ジャンゴ複数のユーザが最初
私のウェブサイトには、自分のユニークな属性を持つ個人と企業の2種類のユーザーがいます。たとえば、個人ユーザーには単一のユーザーしかいないため、user = models.OneToOneField(User)
が必要です。企業では、同じプロファイルに関連する複数のユーザーがいるようにしたいので、代わりにuser = models.ForeignKey(User)
が必要です。
IndivProfile
とCorpProfile
という2つの異なるモデルにモデルを分離することを考えました。モデル固有の属性を関連するサブモデルに移動しながら、両方ともUserProfile
から継承しました。私には良いアイデアのように思えますが、おそらくうまくいくでしょうが、私はAUTH_PROFILE_MODULE
をこの方法で指定することはできません。ユーザーごとに異なる2つのユーザープロファイルがあるからです。
私はまた、このような何か、それを他の方法で回避を行う複数のクラス(モデル)からUserProfile
継承を持っていることについて考えた:私はAUTH_PROFILE_MODULE = 'accounts.UserProfile'
を設定し、その問題を解決するだろう
class UserProfile(IndivProfile, CorpProfile):
# some field
def __unicode__(self):
return self.user.email
この道を。しかし、Pythonの継承は左から右に動作し、IndivProfile
のすべての変数が支配的になるので、それはうまくいくようには見えません。
確かに、私はいつもIndivProfile
とCorpProfile
の変数が混在している単一のモデルを常に持っていて、必要なところで必要なものを使用します。しかし、それはちょうど私にきれいに見えません、私はむしろそれらを分離し、適切なモデルを適切な場所で使用するでしょう。
クレンズこれはどのような方法ですか?
[継承](https://docs.djangoproject.com/en/dev/topics/db/models/#model-inheritance)はどうですか? – danihp
私は 'UserProfile'を抽象化し、' IndivProfile'と 'CorpProfile'を' UserProfile'から継承させることができました。これはまだ 'AUTH_PROFILE_MODULE'の問題を解決するつもりはありません。どちらを指すつもりですか? – abstractpaper
corporate + individual + account_typeフィールドを1つのモデルに追加する方法はありますか?私はあなたが2つのタイプしか持っていないとOKかもしれませんが、2つ以上のプロファイルを持っていると悪いかもしれません。 –