0

django-registration でユーザーのプロファイルに場所フィールドを追加しようとしています。

次のモデルを追加しました。

# in userprofile/models.py
class Profile(models.Model):
    user = models.ForeignKey(User, unique=True)
    location = models.CharField(max_length=100, blank=True)

# in settings.py
AUTH_PROFILE_MODULE = 'userprofile.Profile'

これは機能しています-get_profile()データベースにデータを手動で追加すると機能します。しかし、登録時にシグナル経由でプロファイル情報を追加する方法がわかりません。これは私が現在持っているものです:

# in backend/default/__init__.py
def register(self, request, **kwargs):
    username, email, password = kwargs['email'], kwargs['email'], kwargs['password1']
    if Site._meta.installed:
        site = Site.objects.get_current()
    else:
        site = RequestSite(request)
    new_user = RegistrationProfile.objects.create_inactive_user(username, email, password, site)
    signals.user_registered.send(sender=self.__class__,
                                 user=new_user,
                                 request=request)

    # how to add 'location = USA' to profile via signals here?

    return new_user

上記の関数location=USAで信号を使用してadd を追加するにはどうすればよいですか。__init__.py

4

1 に答える 1

2

settings.pyに追加

LOCATION = 'USA'

__init__。pyで

# in backend/default/__init__.py
def register(self, request, **kwargs):

    username, email, password = kwargs['email'], kwargs['email'], kwargs['password1']
    if Site._meta.installed:
        site = Site.objects.get_current()
    else:
        site = RequestSite(request)
    import settings
    if settings.LOCATION:
        location = settings.LOCATION
    new_user = RegistrationProfile.objects.create_inactive_user(username, location, email, password, site)
    signals.user_registered.send(sender=self.__class__,
                                 user=new_user,
                                 request=request)


    return new_user

しかし、アプリのコードを追加して、物事を行うための良い方法ではありません

于 2011-06-01T17:44:02.650 に答える