我正在使用django allauth进行身份验证,并且我的自定义表单存在问题。我是第一次使用django 1.8,事情和过去有点不同。
这是我的模特:
from django.db import models
from django.contrib.auth.models import User
class FDUserProfile(models.Model):
user = models.OneToOneField(User)
organization = models.CharField(max_length=100)
这是我的表格:
from django import forms
from django.contrib.auth.models import User
from .models import FDUserProfile
class FDSignupForm(forms.ModelForm):
class Meta:
model = FDUserProfile
fields = ['organization']
first_name = forms.CharField(max_length=30, label='Voornaam')
last_name = forms.CharField(max_length=30, label='Achternaam')
organization = forms.CharField(max_length=100, label='Company')
def signup(self, request, user):
user.first_name = self.cleaned_data['first_name']
user.last_name = self.cleaned_data['last_name']
profile = FDUserProfile(user=user, organization=self.cleaned_data['organization'])
profile.save()
我得到的错误如下:
NOT NULL constraint failed: fdauth_fduserprofile.user_id
现在我不希望我的user_id为null,并且不太明白为什么会发生这种情况。我能够简化这个表单并使用User模型作为我的表单模型,只保存first_name和last_name字段,但我也需要存储客户端的公司。还有一点需要注意,这只是我注意到的另一件事。当我只使用first_name和last_name时,用户对象将保存,但不会发送任何电子邮件。一旦我越过这个桥,我就可以越过那座桥。
TIA!