最近,我想出了如何在Django中创建注册。问题是只有三个字段-- username、password和它的确认。
在我的项目中,至少有两种不同属性的users类型。Customers和Freelancers.因此,我尝试创建新的模型,就像我在StackOverflow上发现的那样,但是它返回异常:
Exception Type: ImproperlyConfigured
Exception Value:
Creating a ModelForm without either the 'fields' attribute or the 'exclude' attribute is prohibited; form UserCreateForm needs updating.MODELS.PY:
class UserCustomerProfile(models.Model):
user = models.OneToOneField(User)
email = models.EmailField()
age = models.IntegerField()
def __str__(self):
return "%s's profile" % self.userFORMS.PY:
class UserCreateForm(UserCreationForm):
email = forms.EmailField(required=True)
class Meta:
model = User
def save(self, commit=True):
if not commit:
raise NotImplementedError("Can't create User and UserProfile without database save")
user = super(UserCreateForm, self).save(commit=True)
user_profile = UserCustomerProfile(user=user, email=self.cleaned_data['email'])
user_profile.save()
return user, user_profileVIEWS.PY:
def register(request):
if request.method == 'POST':
form = UserCustomerProfile(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect('register/complete/')
else:
form = UserCreateForm()
token = {}
token.update(csrf(request))
token['form'] = form
return render_to_response('register/registration_form.html', token)你知道怎么解决这个问题吗?
发布于 2015-12-21 11:05:41
禁止在没有“字段”属性或“排除”属性的情况下创建ModelForm;表单UserCreateForm需要更新。
例如:
class UserCreateForm(UserCreationForm):
email = forms.EmailField(required=True)
class Meta:
model = User
fields = ['email', ]发布于 2022-05-26 15:51:43
您需要在"UserCreateForm(UserCreationForm)“类中将”字段“属性添加到"Meta”内部类中,如下所示:
FORMS.PY:
class UserCreateForm(UserCreationForm):
email = forms.EmailField(required=True)
class Meta:
model = User
fields = ("username", "email")
# ↑ ↑ ↑ Here ↑ ↑ ↑
def save(self, commit=True):
if not commit:
raise NotImplementedError("Can't create User and UserProfile without database save")
user = super(UserCreateForm, self).save(commit=True)
user_profile = UserCustomerProfile(user=user, email=self.cleaned_data['email'])
user_profile.save()
return user, user_profile或者,您需要在"UserCreateForm(UserCreationForm)“类中添加”排除“属性到"Meta”内部类,如下所示:
FORMS.PY:
class UserCreateForm(UserCreationForm):
email = forms.EmailField(required=True)
class Meta:
model = User
exclude = ("first_name", "last_name")
# ↑ ↑ ↑ Here ↑ ↑ ↑
def save(self, commit=True):
if not commit:
raise NotImplementedError("Can't create User and UserProfile without database save")
user = super(UserCreateForm, self).save(commit=True)
user_profile = UserCustomerProfile(user=user, email=self.cleaned_data['email'])
user_profile.save()
return user, user_profilehttps://stackoverflow.com/questions/34394116
复制相似问题