我有以下错误:Django的AttributeError的:“用户”对象有没有属性“set_password”,但用户没有覆盖
AttributeError: 'User' object has no attribute 'set_password'
的问题是我没有覆盖类用户:
我model.py:
class User(models.Model):
username = models.CharField(max_length=30)
password = models.CharField(max_length=30)
email = models.EmailField()
def __str__(self):
return self.username
我view.py:
def post(self, request):
form = self.form_class(request.POST)
if form.is_valid():
user = form.save(commit=False)
print type(user)
# Cleaning and normalizing data
username = form.cleaned_data['username']
password = form.cleaned_data['password']
user.set_password(password)
user.save()
# returns User objects if the credential are correct
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
return redirect('website:home')
return render(request, self.template_name, {'form': form})
这是我form.py:
class UserForm(forms.ModelForm):
password = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control',
'type': 'password',
'placeholder': 'Enter your password'}))
class Meta:
model = models.User
我真的不知道还该不该覆盖用户类。在这种情况下,我应该和在哪种情况下我不应该?
我这样做了,但它产生如下问题:django.core.exceptions.FieldError:类局部场“密码”“用户”的冲突与基类名称类似的字段“AbstractUser” – mel
这是因为在AbstractUser中有一个称为密码的字段。 –
是的,我知道,但那么好的做法是什么? – mel