2012年12月14日金曜日

Djangoで、追加のユーザ情報を保存、UserProfileとget_profile()

Django(1.4.2)で、追加のユーザ情報を保存です。UserProfileクラスを追加して、get_profile() メソッドで呼び出して利用できます。今回は、UserProfileの名前を変えて、Memberクラスで設定してみました。アプリケーション名も「member」です。以下、ユーザーを登録して、Memberテーブルに認証キーを追加するサンプルです。良い具合にユーザーテーブルに紐付いて、追加のデータが保存されます。

settings.py
# UserProfile
AUTH_PROFILE_MODULE = 'member.member'
/member/models.py
from django.db import models
from django.contrib.auth.models import User
from django.db.models import permalink
from django.db.models.signals import post_save

class Member(models.Model):
    user = models.OneToOneField(User)
    authkey = models.CharField(db_index=True, unique=True, max_length=100, default=None)

    def create_user_profile(sender, instance, created, **kwargs):
        if created:
            Member.objects.create(user=instance)

    post_save.connect(create_user_profile, sender=User)
/member/views.py
# Userデータ登録
user = User.objects.create_user(no, email, password)
user.save()

# Memberテーブルにハッシュ値を追加
member = user.get_profile()
member.authkey = authkey
member.save()

0 件のコメント:

コメントを投稿