最近,我已经弄清楚如何在Django中创建注册。问题是,只有三个字段 - username
,password
,这是确认。不正确配置的表单 - Django
在我的项目中,至少有两种类型的users
具有不同的属性。 Customers
和Freelancers
。所以我试图让我在这里找到在计算器上新的模式,但它返回例外:
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.user
FORMS.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_profile
VIEWS.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)
你知道如何解决这个问题吗?
部分题外话,但你真的需要在所有限制你的用户模式?它完全有可能有人可能希望既招揽自由职业者,我可以告诉他们他们需要两个模型在分钟 – Sayse
@Sayse也许不是,但我是新的Django,我尽我所能。关键是创建注册表单最简单的方法就是使用内置函数。然后我意识到有两种类型的用户 - 自由职业者 - 译者和客户。对于翻译者,我想知道,哪种语言翻译,但我不想要关于客户的这些信息。如果有更好的方法,那会很好。 –