我正在尝试创建一个需要用户配置文件的项目。我扩展了django默认用户。我可以成功创建用户,但是无法将数据添加到配置文件模型中,
例如: 我已经为用户创建了一个用户'Demouser',已经成功创建了该用户,并且也可以使用创建的用户登录。但是下一步是在配置文件模型中更新有关'Demouser'的数据,为此我创建了注册视图和表格但似乎不起作用。
Forms.py文件:
class ProfileForm(forms.ModelForm):
class Meta:
model = profiles
exclude=(
'id','Username','User',
)
Models.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,
)
Views.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 User模型中更新,我希望在我的个人资料模型中对其进行更新...
预先感谢
答案 0 :(得分:0)
一种可能的解决方案是将您的个人资料实例并保存在那里。我想从您的发布方式中说些什么
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
}
)