title: Django Disable/Exclude Field in CreateView but enable/include it in UpdateView
body: <p>I would like to exclude/disable a Charfield (with options and a default value) when creating a new object, but when editing this object, I would like to enable / include the Charfield for the user to change it. </p>
  
  <p>So far I tried <a href="https://stackoverflow.com/questions/324477/in-a-django-form-how-do-i-make-a-field-readonly-or-disabled-so-that-it-cannot">this answer</a> I found here on Stackoverflow, but it wasn't the full solution for me. The Charfield did get disabled but when I tried to create my object, Django would always tell me that the field is required (even though it has a Default Value). </p>
  
  <p>My code:</p>
  
  <pre><code>class OfferCreateForm(forms.ModelForm):
      class Meta:
          model = Offer
          exclude = ['date', 'number']
  
      def __init__(self, *args, **kwargs):
          request = kwargs.pop("request", None)
          super(OfferCreateForm, self).__init__(*args, **kwargs)
          instance = getattr(self, 'instance', None)
          if instance and instance.pk:
              self.fields['status'].widget.attrs['disabled'] = False
          else:
              self.fields['status'].widget.attrs['disabled'] = True
  
          self.helper = FormHelper()
          self.helper.form_tag = False
          self.helper.help_text_inline = True
          self.helper.add_layout(Layout(
              Fieldset('Angebot',
                       Row(
                           Div(
                               Field('name'),
                               css_class='col-sm-12'
                           ),
                           Div(
                               Field('category'),
                               css_class='col-sm-6'
                           ),
                           Div(
                               Field('status'),
                               css_class='col-sm-6'
                           ),
                       )),
              Fieldset('Kunde',
                      Row(
                          Div(
                              Field('customer', css_class='selectize'),
                              css_class='col-sm-6'
                          ),
                          Div(
                              Field('receiver', css_class='selectize'),
                              css_class='col-sm-6'
                          ),
                      )),
              Fieldset('Kundeninformation',
                      Row(
                          Div(
                              Field('introduction'),
                              css_class='col-sm-12'
                          ),
                      ),
                  ),
              Fieldset('Zusätzliche Informationen',
                      Row(
                          Div(
                              Field('footer'),
                              css_class='col-sm-12',
                          ),
  
                      ),
                  ),
              ))
  
      def clean_status(self):
          instance = getattr(self, 'instance', None)
          if instance and instance.pk:
              return instance.status
          else:
              return self.cleaned_data['status']
  </code></pre>
  
  <p>The status field in my model:</p>
  
  <pre><code>status = models.CharField(default="CREATED", max_length=255, choices=STATUSES, verbose_name="Status")
  </code></pre>
  
  <p>Also note: the clean_status function is never called. I tried to debug in it, but apparently this function does absolutely nothing. </p>
  
  <p>I know I could create two different forms, but I would like to avoid that if possible, also please no Javascript.</p>