如何在django中的自定义用户模型中更新用户详细信息



我刚刚从abstractuser创建了一个自定义用户模型。我可以创建用户,但更新不起作用,显示了一些错误。我也是英语周,所以我知道如何分享我的问题。简而言之,我想编辑一个用户的电子邮件和密码。

###This is my user model
class User(AbstractUser):
roles =(
('Admin','Admin'),
('Placement Manager','Placement Manager'),
)
username=models.CharField(max_length=100,null=True,blank=True)
email = models.EmailField(max_length=50, null=True,blank=True)
phone = models.IntegerField(unique=True)
role = models.CharField(max_length=100,choices = roles,null=True,blank=False)
USERNAME_FIELD = 'phone'
REQUIRED_FIELDS = ['email','username','role']
objects=UserManager()
def get_username(self):
return self.email 
###This is my view 
def editPlacementManager(request):
if request.method=='POST':
name=request.POST.get('name')
phone=request.POST.get('phone')
email=request.POST.get('email')
password=request.POST.get('password')
userid = request.POST.get('pmId')
User.objects.get(id=userid).update(username=name,phone=phone,email=email,password=password,role='Placement Manager')

return redirect('listplacementmanager')
return render(request,"index/placementmanager.html")
### The error is 
AttributeError at /editplacementmanager
'User' object has no attribute 'update'

Yh,您将得到该错误,因为更新方法仅适用于查询集。所以你可以这样做:


def editPlacementManager(request):
if request.method=='POST':
name=request.POST.get('name')
phone=request.POST.get('phone')
email=request.POST.get('email')
password=request.POST.get('password')
userid = request.POST.get('pmId')
user = User.objects.get(id=userid)
user.name = name
user.phone = phone
user.email = email
# You can continue with whichever field you want
user.save()
# Then finally you save the object with the updated fields

return redirect('listplacementmanager')
return render(request,"index/placementmanager.html")

实际上,这只是一件简单的事情,只需散列密码并更新即可。

最新更新