generic - Al obtener__init__() se obtuvo una ''instancia'' de argumento de palabra clave inesperada con CreateView of Django
django manual (2)
Algunos detalles:
Request Method: GET
Request URL: http://localhost:8080/user/create
Django Version: 1.5.1
Exception Type: TypeError
Exception Value: ____init____() got an unexpected keyword argument ''instance''
Exception Location: /place/venv/local/lib/python2.7/site-packages/django/views/generic/edit.py in get_form, line 35
Python Executable: /place/venv/bin/python
Python Version: 2.7.3
vistas.py
class UserCreateView(CreateView):
model = models.User
form_class = forms.UserForm
urls.py
url(r''^user/create$'', UserCreateView.as_view(), name=''user_create''),
forms.py
class UserForm(forms.Form):
GROUP_CHOICES = [(-1, ''[Choose]'')]
GROUP_CHOICES += [(group.id, group.name.capitalize()) for group in auth.models.Group.objects.all()]
email = forms.EmailField(
label=''Email'',
widget=forms.TextInput(attrs={''placeholder'': ''Email''})
)
first_name = forms.CharField(
label=''First Name'',
widget=forms.TextInput(attrs={''placeholder'': ''First Name''})
)
last_name = forms.CharField(
label=''Last Name'',
widget=forms.TextInput(attrs={''placeholder'': ''Last Name''})
)
password = forms.CharField(
label=''Password'',
widget=forms.PasswordInput(attrs={''placeholder'': ''Password''})
)
password_validation = forms.CharField(
label=''Repeat Password'',
widget=forms.PasswordInput(attrs={''placeholder'': ''Repeat Password''})
)
mobile_number = forms.CharField(
label=''Mobile Number'',
widget=forms.TextInput(attrs={''placeholder'': ''Mobile Number''})
)
office_number = forms.CharField(
label=''Office Number'',
widget=forms.TextInput(attrs={''placeholder'': ''Office Number''})
)
group = forms.ChoiceField(
label=''Group'',
choices=GROUP_CHOICES
)
def clean_password_validation(self):
if self.cleaned_data[''password''] == self.cleaned_data[''password_validation'']:
return self.cleaned_data[''password_validation'']
else:
raise forms.ValidationError(''Passwords don/'t match'')
def clean_group(self):
if self.cleaned_data[''group''] != -1:
return self.cleaned_data[''group'']
else:
raise forms.ValidationError(''Please, choose a group'')
modelos.py
class User(models.Model):
user = models.OneToOneField(auth.models.User)
mobile_number = models.CharField(max_length=64)
office_number = models.CharField(max_length=64)
Sospecho que la clase UserForm
debería ser modelo. Es posible que desee cambiar los campos, pero debe derivarse de `ModelForm.
Así que cambia la definición de la forma a
class UserForm(forms.ModelForm):
class Meta:
model = User
fields = [...] # list of fields you want from model
#or define fields that you want.
....
forms.py define campos en corchetes cuadrados como campos = [''campo 1'', ''campo 2'', ...]
class CustomerForm(forms.ModelForm):
class Meta:
model = Customer
fields = [''fname'',''lname'',''email'',''address'',''city'',''state'',''zip'',''username'',''password'',''age'',''mobile'',''phone'']