Как мне расширить мою Django форму UserCreationForm по умолчанию? - PullRequest
0 голосов
/ 18 июня 2020

вот мой "forms.py"

class CreateUser(UserCreationForm):

    class Meta:
        model = User
        fields = ['username', 'email', 'password1', 'password2']

и вот мой "views.py"

def register(request):
    form = CreateUser()

    if request.method == 'POST':
        form = CreateUser(request.POST)
        if form.is_valid():
            form.save()

            # messages.sucess(request, 'Acccount created!')

            return redirect('login')

    context = {'form':form}
    return render(request, 'register.html', context)

и вот мой базовый c регистр. html пока.

<h3>Register</h3>

<form method="POST" action="">
    {% csrf_token %}
    {{form.as_p}}

    <input type="submit" name="Create User">

    <a href="/login">I already have a user!</a>

    {{form.errors}}


</form>

Дело в том, что мне нужно много чего добавить к регистрации. Вход по умолчанию с пользователем / паролем идеален, но при регистрации необходимо иметь другие поля для таких вещей, как адрес и номер кредитной карты. Как мне правильно продлить эту регистрацию, чтобы логин остался прежним?

1 Ответ

0 голосов
/ 18 июня 2020

Я не знаю, лучший ли это способ или аналогичный, поэтому я не уверен в использовании Usercreationform, но я делал это в своих проектах, подобных этому. Я создал модель User в моем models.py, а затем я просто определил поля, необходимые для регистрационной формы, перед мета-классом в forms.py

class RegisterForm(forms.ModelForm):
    username = forms.CharField(max_length=30)
    first_name = forms.CharField(max_length=30)
    last_name = forms.CharField(max_length=30)
    email = forms.EmailField(max_length=254)
    password = forms.CharField(widget=forms.PasswordInput)

    class Meta:
        model = User
        fields = ['username', 'first_name', 'last_name', 'email', 'password']

...