Django UserProfile 機能を使用してユーザーを登録しようとしています。拡張 UserProfile モデルがあります。私のファイルは以下のようになります。「accounts_userprofile.u_id may not be NULL」というメッセージが表示されます。フォームを保存するときに「commit=false」を使用しようとしましたが、うまくいきませんでした。私の親モデルには、null = True、空白 = True に設定されたフィールドがあります。テーブルを削除して数回追加しましたが、何も機能しませんでした. 助けてください. よろしくお願いします.
私のモデルは以下の通りです:
class UserBase(models.Model):
class Meta:
abstract = True
u_id = models.IntegerField(null = True,blank = True)
email = models.CharField(max_length=200, null = True,blank = True)
website=models.CharField(max_length=200, null = True, blank = True)
age = models.IntegerField(blank = True, null = True)
location = models.CharField(max_length= 200, null=True, blank = True)
username = models.CharField(max_length = 100, null = True, blank = True)
UserProfile モデルは次のとおりです。
class UserProfile(UserBase):
user = models.ForeignKey(User, null= True, blank = True, unique = True)
User.profile = property(lambda u: UserProfile.objects.get_or_create(user=u)[0])
def __unicode__(self):
return "User Profile for: " + self.user.username
def create_user_profile(sender, **kw): ユーザー = kw['インスタンス'] if kw['created']: up = UserProfile(user=user)
up.save()
post_save.connect(create_user_profile、送信者 = ユーザー、dispatch_uid ="user_create_profile")
私の登録ビューは以下のとおりです。
def register(request, template_name="registration/register.html"): request.method == 'POST' の場合:
postdata = request.POST.copy() form = UserCreationForm(postdata) if form.is_valid(): un = postdata.get('username','') pw = postdata.get('password1','') from django.contrib.auth import login, authenticate new_user = authenticate(username=un, password=pw) form.save() #if new_user and new_user.is_active: #login(request, new_user) #url = urlresolvers.reverse('my_account') #return HttpResponseRedirect(url)
else: form = UserCreationForm() page_title = 'ユーザー登録' return render_to_response(template_name, locals(), context_instance=RequestContext(request))>