Как отключить проверку полей, если мы хотим перейти к предыдущему шагу? - PullRequest
0 голосов
/ 06 января 2019

Я использую мастер форм django в системе аутентификации. У меня есть 2 шага мастера форм. Во втором у меня есть две кнопки: кнопка «Предыдущий шаг» и кнопка «Отправить». Когда кнопка «Предыдущий шаг» используется для перехода назад, я получаю предупреждение Джанго, чтобы заполнить поле.

Как отключить проверки для кнопки «Предыдущий шаг» и сохранить проверки для кнопки «Отправить»?

Я уже отключил проверки JavaScript для кнопки «Предыдущий шаг».

Мой HTML:

<!-- Forms -->
{{ wizard.management_form }}
{% for field in wizard.form %}
  <div class="wrap-input100 rs1-wrap-input100 validate-input m-b-20">
    {{ field }}
    <span class="focus-input100"></span>
  </div>
{% endfor %}

<!-- Buttons -->
{% if wizard.steps.next %}
  <div class="container-login100-form-btn">
    <button type="submit" value="{{ wizard.steps.next }}" class="login100-form-btn">Next step</button>
  </div>
{% else %}
  <div class="container-login100-form-btn">
    <div class="split-left">
      <button type="submit" value="{{ wizard.steps.prev }}" class="login100-form-btn" formnovalidate>Prev step</button>
    </div>
    <div class="split-right">
        <button type="submit" class="login100-form-btn">Sign up</button>
    </div>
  </div>
{% endif %}

вид:

class signup(SessionWizardView):
    template_name='accounts/signup.html'
    form_list = [UserCreationForm_1, UserCreationForm_2]

    def done(self, form_list, **kwargs):

        form_step = [form for form in form_list]

        # step 1: ModelForm
        user = form_step[0].save()
        auth_login( self.request, user )
        # step 2: Form
        user = form_step[1].save()

        return redirect( 'home' )

формы:

class UserCreationForm_1(forms.ModelForm):
    password1 = forms.CharField(widget=forms.PasswordInput(attrs={'class':'input100', 'placeholder': 'Password'}))
    password2 = forms.CharField(widget=forms.PasswordInput(attrs={'class':'input100', 'placeholder': 'Repeat Password'}))

    class Meta:
        model = MyUser
        fields = ('shown_name', 'email')
        widgets = {
            'email': forms.EmailInput(attrs={'class':'input100', 'placeholder': 'Email'}),
            'shown_name': forms.TextInput(attrs={'class':'input100', 'placeholder': 'User name'}),
        }

class UserCreationForm_2(forms.Form):
    name = forms.CharField(  max_length=40, widget=forms.TextInput(attrs={'class':'input100', 'placeholder': 'Name'}) )
    date_of_birth = forms.DateField( widget=forms.DateInput(attrs={'class':'input100', 'placeholder': 'Date of Birth'}) )
    phone = PhoneNumberField( widget=forms.TextInput(attrs={'class':'input100', 'placeholder': 'Phone'}) )

На втором шаге мастера форм, когда я использую кнопку Prev, это происходит: https://imgur.com/54VvvZx
Когда я использую кнопку «Отправить», это происходит: https://imgur.com/JLCYMmr

1 Ответ

0 голосов
/ 07 января 2019

Проблема не имела ничего общего с Джанго. Это была проблема с JavaScript. Мне нужно было только удалить класс validate-input из форм div.

...