python - 使用扩展的 django 用户模型更新配置文件模型中的数据
问题描述
我正在尝试创建一个需要用户配置文件的项目。我已经扩展了 django 默认用户。我能够成功创建用户,但我无法将数据添加到配置文件模型中,
例如:我创建了一个用户“Demouser”,用户已成功创建,我也可以使用创建的用户登录。但下一步是在配置文件模型中更新有关“Demouser”的数据,为此我创建了注册查看和形成,但似乎不起作用。
Forms.py 文件:
class ProfileForm(forms.ModelForm):
class Meta:
model = profiles
exclude=(
'id','Username','User',
)
模型.py:
class profiles(models.Model):
class Meta:
verbose_name_plural='Profile\'s'
Username=models.OneToOneField(
User,
on_delete=models.CASCADE,
unique=True,
related_name='profile',
)
first_name=models.CharField(
max_length=25,
)
last_name=models.CharField(
max_length=25,
)
email_id=models.EmailField()
previous_projects=models.TextField(
null=True,
blank=True,
)
视图.py:
class ProfileEditView(views.View):
def get(self,request,*args,**kwargs):
if request.user.is_authenticated:
return render(request,'editprofile.html',context={'form':ProfileForm})
else:
messages.success(request,('You must Login into system for access'))
return redirect('profiles:Login')
def post(self,request,*args,**kwargs):
user=User.objects.get(username=request.user.username)
print(user)
form=ProfileForm(request.POST,instance =user)
if form.is_valid():
form.save()
messages.success(request,('Profile Edited succesfully'))
return render(
request,
'editprofile.html',
context={
'form':ProfileForm
}
)
当我使用 ProfileEditView 更新数据时,假设我更新了登录用户的名字,数据在默认 django 用户模型中更新,我希望它在我的配置文件模型中更新...
提前致谢
解决方案
一种可能的解决方案是带上您的个人资料实例并将您的个人资料保存在那里。我想从你的帖子方法中说什么
def post(self,request,*args,**kwargs):
user=User.objects.get(username=request.user.username)
print(user)
form=ProfileForm(request.POST)
if form.is_valid():
// profile is valid now bring profile instance
profile = Profile.objects.get(username=user)
profile.first_name = form.cleaned_data['first_name']
profile.save()
messages.success(request,('Profile Edited succesfully'))
return render(
request,
'editprofile.html',
context={
'form':ProfileForm
}
)
推荐阅读
- c++ - 将结构写为二进制,其中一个成员是字符串?
- javascript - 停止重新渲染聊天
- php - 如何为通过 https 访问的 cakephp 应用程序修复“在此服务器上找不到 webroot/”?
- javascript - 如何使用 Math.Floor 获取特定索引?
- c - 如何建立一个符号,一个字符作为循环的条件
- python - 在python中将一组3D点转换为高度图像的最快方法
- javascript - 未捕获的类型错误:无法读取 null 的属性“jsonName”
- ruby-on-rails - 如何在不使用 docker-compose 的情况下配置 sidekiq&redis?
- sql-server - 需要将动态 SQL、开放式查询、JSON、动态变量和其他一些奇怪的东西混合到一个查询中
- javascript - Dynamodb 获取项目出错