Недавно я выяснил, как создать регистрацию в Django. Проблема в том, что есть только три поля: username
, password
и это подтверждение.Неправильно настроенная форма - Django
В моем проекте должно быть не менее двух типов 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.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, и я стараюсь изо всех сил. Дело в том, что самым простым способом создания регистрационной формы было использование встроенных функций. Тогда я понял, что есть два типа пользователей - фрилансеров - переводчиков и клиентов. Для переводчика я хочу, например, знать, какой язык переводит, но я не хочу эту информацию о клиенте. Если будет лучший способ, было бы хорошо. –