Getting __init__() got an unexpected keyword argument 'instance' with CreateView of Django

后端 未结 4 1610
无人及你
无人及你 2020-12-10 10:01

Some details:

Request Method: GET
Request URL: http://localhost:8080/user/create
Django Version: 1.5.1
Exception Type: TypeError
Exception Value: ____init__         


        
相关标签:
4条回答
  • 2020-12-10 10:34

    I override __init__() method incorrectly, without initial arguments, as show below

    class MyForm(forms.ModelForm):
        ...
        def __init__(self):
            super(CaseForm, self).__init__()
            ...
    

    And get this error as result

    TypeError at /case/create

    __init__() got an unexpected keyword argument 'initial'

    To fix it, I set arguments to __init__() and pass them when call super class __init__(), see result below

    class MyForm(forms.ModelForm):
        ...
        def __init__(self, *args, **kwargs):
            super(CaseForm, self).__init__(*args, **kwargs)
            ...
    
    0 讨论(0)
  • 2020-12-10 10:35

    I solved a similar error I got when trying to save a form to a database. "Report() got an unexpected keyword argument 'summary'"

    The problem was that the field names in models.py and forms.py didn't match.

    In the class Report in models.py the name of the field was "summary_input", but in forms.py it was named "summary", so I changed the variable name in forms to match the one in models.

    # models.py
    class Report(models.Model):
        summary_input = models.TextField()
    
    # forms.py
    class ReportForm(forms.Form):
        summary = forms.CharField(widget=forms.widgets.Textarea)
        # changed to 
        # summary_input = forms.CharField(widget=forms.widgets.Textarea)
    
    0 讨论(0)
  • 2020-12-10 10:36

    forms.py Defines Fields in Square Brackets like fields=['field 1', 'field 2',...]

    class CustomerForm(forms.ModelForm):        
        class Meta:
            model = Customer
            fields = ['fname','lname','email','address','city','state','zip','username','password','age','mobile','phone']
    
    0 讨论(0)
  • 2020-12-10 10:42

    I suspect class UserForm should be model form. You may want to change fields, but it should be derived from `ModelForm.

    So change form definition to

    class UserForm(forms.ModelForm):
       class Meta:
           model = User
           fields = [...] # list of fields you want from model
    
       #or define fields that you want.
       ....
    
    0 讨论(0)
提交回复
热议问题