Reputation: 11193
I'm trying to create a form where both fields is optional however, i keep getting an error when setting null
and blank
. what am i doing wrong?
Error
super(CharField, self).__init__(*args, **kwargs)
TypeError: __init__() got an unexpected keyword argument 'blank'
forms.py
class EditProfile(forms.Form):
"""
A form that lets a user change their profile information
"""
first_name = forms.CharField(
label=("Fornavn"),
strip=False,
blank=True,
null=True
)
last_name = forms.CharField(
label=("Efternavn"),
strip=False,
blank=True,
null=True,
)
def __init__(self, user, *args, **kwargs):
self.user = user
super().__init__(*args, **kwargs)
def save(self, commit=True):
first_name = self.cleaned_data["first_name"]
last_name = self.cleaned_data["last_name"]
self.user.first_name = first_name
self.user.last_name = last_name
if commit:
self.user.save()
return self.user
Upvotes: 7
Views: 13553
Reputation: 73
If you want to save it as None
in case when no data provided in the form for that field. You can do it with empty_value
parameter to CharField
(Django Docs):
field_name = forms.CharField(required=False, empty_value=None)
Note: You should save null
to a char field ONLY if you want to distinguish between null
and "" (blank) on that field. Otherwise, a nullable char field is not much recommended.
Upvotes: 2
Reputation: 1465
As @danielcorreia said you don't use blank
in a form, use required = False
instead.
class EditProfile(forms.Form):
"""
A form that lets a user change their profile information
"""
first_name = forms.CharField(
label=("Fornavn"),
strip=False,
required=False
)
last_name = forms.CharField(
label=("Efternavn"),
strip=False,
required=False
)
def __init__(self, user, *args, **kwargs):
self.user = user
super().__init__(*args, **kwargs)
def save(self, commit=True):
first_name = self.cleaned_data["first_name"]
last_name = self.cleaned_data["last_name"]
self.user.first_name = first_name
self.user.last_name = last_name
if commit:
self.user.save()
return self.user
Upvotes: 9
Reputation: 647
The CharField
cunstructor dosent take blank
as an argument. You should use required = False
instead of using blank
and null
fields. By defaylt required
is True
. To make your code work write:
first_name = forms.CharField(label=("Fornavn"), strip=False, required=False)
Upvotes: 0