Обработка кнопок в Django

Я хочу отобразить только 2 кнопки, которые должны отправляться при нажатии. При нажатии на кнопки должна отображаться только форма 2 на кнопке User или другая форма на кнопке Doctor (добавить поле к форме 2).

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

поток:

form1-> show_message_form_condition
{'is_doctor': True} for both buttons clicks and for radio it's is_{'is_doctor': True} and {'is_doctor': False}-> display form 2 if value is false.

forms.py

class PickUserType(forms.Form):
    is_doctor = forms.BooleanField(required=False)
class SignUpForm(UserCreationForm):
    first_name = forms.CharField(max_length=30, required=False, help_text='Optional.')
    last_name = forms.CharField(max_length=30, required=False, help_text='Optional.')
    email = forms.EmailField(max_length=254, help_text='Required. Inform a valid email address.')

    class Meta:
        model = Profile
        fields = ('username', 'first_name', 'last_name', 'email', 'password1', 'password2', )

Оба

{% block content %}

    <form method = "POST" action='.' enctype="multipart/form-data">
        {% csrf_token %}
        <!-- A formwizard needs this form -->
        {{ wizard.management_form }}
        <!-- {{form_as_p}} -->
        <button type="submit" value="Doctor" name="0-is_doctor">Doc</button>
        <button type="submit" value="User" name="0-is_doctor">User</button> 
        <!-- {% for field in form.visible_fields %}
            {{ field.errors }}
            {% for radio in field %}
                <div class="form-check form-check-inline">
                    {{ radio }}
                </div>
            {% endfor %}
        {% endfor %}
        <input type="submit" value="submit"> -->

    </form>
    <a href="{% url 'login' %}">Log In</a>

{% endblock %}

views.py

from django.shortcuts import redirect, render
from .forms import PickUserType, SignUpForm, UserProfileForm
from django.contrib.auth import login, authenticate

from formtools.wizard.views import SessionWizardView

def show_message_form_condition(wizard):
    # try to get the cleaned data of step 1
    cleaned_data = wizard.get_cleaned_data_for_step('0') or {}
    # check if the field isDoctor was checked.
    print(cleaned_data)
    #print(cleaned_data.get('is_doctor') !=True )
    return cleaned_data.get('is_doctor')!= True 

def process_data(form_list):
    form_data = [form.cleaned_data for form in form_list]
    print(form_data)
    return form_data

WIZARD_FORMS = [("0", PickUserType),
                ("1" , SignUpForm),
            ]
TEMPLATES = {"0": "pickUserType.html",
             "1": "createUser.html"}

class ContactWizard(SessionWizardView):
    template_name = "signup.html"

    def done(self, form_list, **kwargs):
        process_data(form_list)
        return redirect('home')

    def get_template_names(self):
        return [TEMPLATES[self.steps.current]]
Вернуться на верх