我正在使用 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 为空,也不真正理解为什么会这样。我能够简化此表单并将 User 模型用作表单的模型,并且只需保存 first_name 和 last_name 字段,但是我还需要存储客户的公司。还有一件事要注意,这只是我注意到的另一件事。当我只使用 first_name 和 last_name 时,用户对象将保存但不会发送电子邮件。一旦我过了这座桥,我就可以过那座桥。
蒂亚!