__init __()得到了一个意外的关键字参数'last_name'
问题描述:
我有一个表单保存的问题。我有一个名为UserProfile
模型,就像这样:__init __()得到了一个意外的关键字参数'last_name'
class UserProfile(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=75)
email = models.EmailField(max_length=50, unique=True)
password = models.CharField(max_length=16)
age = models.IntegerField()
...
和形式创建模型的实例,就像这样:
class UserProfileForm(forms.Form):
first_name = forms.CharField(label='Introduzca su nombre', max_length=50)
last_name = forms.CharField(label='Introduzca sus apellidos', max_length=75)
email = forms.EmailField(label='Introduzca su email', max_length=50)
birth_date = forms.DateField(label='Introduzca su fecha de nacimiento', widget=forms.DateTimeInput(format='%d/%m/%Y'))
password = forms.CharField(label='Introduzca su contrasena', max_length=16, widget=forms.PasswordInput())
password_repeat = forms.CharField(label='Por favor, repita su contrasena', max_length=16, widget=forms.PasswordInput())
...
def save(self):
age = (date.today()-self.cleaned_data['birth_date']).days/365
user = UserProfile(first_name=self.cleaned_data['first_name'],
last_name=self.cleaned_data['last_name'],
email=self.cleaned_data['email'],
password=self.cleaned_data['password'],
age=age) # The error is detected in this line
user.save()
return user
它引发以下错误行:
__init__() got an unexpected keyword argument 'last_name'
我不知道有什么问题,谁能帮助我?
答
class UserProfile(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=75)
email = models.EmailField(max_length=50, unique=True)
password = models.CharField(max_length=16)
age = models.IntegerField()
...
我想你在这里有__init__
方法,你没有显示。如果您使用的是它应该是这样的:
def __init__(self, *args, **kwargs):
... # your code here
super(UserProfile, self).__init__(*args, **kwargs)
... # and/or here
换句话说,你已经在方式,它的签名不匹配母公司实现的签名覆盖__init__
。
+0
谢谢warvariuc;)我解决了它,我从我的所有模型中删除了所有的__init__方法,它的工作原理 –
这是Django?你确定'UserProfile'类与你所显示的一样吗? – warvariuc
您在UserProfile中的构造函数只接受一个参数(model,Model)不是5!这就是为什么解释者尖叫'last_name'的原因。更改您在UserProfile中传递的参数或创建模型,并添加像“first_name”,“last_name”这样的东西来建模对象,并将此对象传递给构造函数。 – pkruk
@pkruk你从哪里得到这个信息? “[*关键字参数只是您在模型中定义的字段的名称。*](https://docs.djangoproject.com/en/1.8/ref/models/instances/#django.db.models 。模型)”。该错误似乎没有在代码中显示。 – dhke