0

私は自分のサイトへのソーシャルネットワークログインにdjangosocialauthを使用していますが、ユーザー情報はユーザーモデルに保存されています。しかし、追加のデータを格納するためにユーザーモデルを継承する別のモデル( ExtraInfo )があります。django social authによってユーザーモデルに新しいユーザーが作成されたときに、サブモデル( ExtraInfo )に新しいインスタンスを作成するにはどうすればよいですか?

SOCIAL_AUTH_USER_MODEL ='myapp.CustomUser'を試しましたが、サブモデルでcreate_userメソッドを使用できないため、これは機能しません。

class ExtraInfo(User):
      phoneNo = models.CharField(max_length = 30)
      city = models.CharField(max_length = 30)
      state = models.CharField(max_length = 30)
4

2 に答える 2

1

プロジェクトによって異なりますが、ExtraInfoモデルはモデルから継承するのではUserなく、@ miki725で説明されているように、またはdjangoプロファイルを使用して拡張する必要があるようです。

django-social-authに関しては、必要なモデルを作成する関数を使用してデフォルトのパイプラインを拡張できます(ユーザーが引数を使用して新しいかどうかを確認できます)。ExtraInfois_new

ユーザーが他の方法で作成されている場合は、シグナルが最適です。

于 2012-11-16T06:38:12.327 に答える
0

Djangoのドキュメントによると、aの属性を追加するための推奨される方法は、次のようにサブクラス化する代わりにUser使用することです。OneToOneField

class ExtraInfo(models.Model):
    user = models.OneToOneField(User, related_name='extra_info')
    phoneNo = models.CharField(max_length = 30)
    city = models.CharField(max_length = 30)
    state = models.CharField(max_length = 30)

問題については、Djangoのpost_saveシグナル(docscreated )に接続して、パラメーターが変更されるたびに、その新しいユーザーのモデルをTrue作成できます。ExtraInfo

于 2012-11-16T05:40:11.427 に答える