Отключить поле формы Django только в UpdateView

У меня есть UserForm в forms.py, который является общим для функций Register и Edit Profile, его представления также являются общими, так как 90% функций схожи в обоих представлениях.

Я хочу disable EMailField из UserForm только на Edit Profile странице, но должен быть доступен для редактирования на Register странице. Вот мой код:

формы.py

class UserForm(forms.ModelForm):
  password = None
  email = forms.EmailField(required=False, disabled=True)  #-- This will disable all the times
  salutation = forms.ChoiceField(choices=Choices.SALUTATIONS)
  blood_group = forms.ChoiceField(choices=Choices.BLOOD_GROUPS)

  class Meta:
    model = User
    fields = ('salutation', 'blood_group', 'email', 'first_name', 'middle_name', 'last_name', 
              'gender', 'birth_date', 'profile')

Одна и та же форма отображается как в представлениях register, так и в представлениях edit. Вот мой urls.py.

path('register/', StudentView.as_view(), name='addview'), 
path('<int:pk>/edit/', StudentView.as_view(), name='editview'), 

в views.py (подробные сведения о views.py см. в принятом ответе)

userform = UserForm(request.POST or None, instance=self.object)

допуск.html

<form class="form" name="admissionForm" id="admissionForm" method="post" 
            enctype="multipart/form-data" action="{% url 'editview' form.instance.id %}"> 
 {% csrf_token %}
  <div class="pages">
     <h4 class="mt-2 mb-3">Personal Information</h4>
      {% include "student_errors.html" %}                
      {{userform|crispy}}      
      ....
      <div class="btn_container">
          <button type="submit" class="btn btn-info float-right btn-next">Submit</button>  
      </div>
 </div>

person Laxmikant Ratnaparkhi    schedule 26.08.2020    source источник


Ответы (1)


В вашем update_views вы можете установить:
form.fields['email'].disabled = True

person ItsMilann    schedule 26.08.2020