我想在django中用现有的数据自动填充我的更新表单,但是instance=request.user
和instance=request.user.profile
似乎没有自动填充表单
views.py
def UserProfile(request, username):
# user_profiles = Profile.objects.all()
user = get_object_or_404(User, username=username)
profile = Profile.objects.get(user=user)
url_name = resolve(request.path).url_name
context = {
'profile':profile,
'url_name':url_name,
}
return render(request, 'userauths/profile.html', context)
@login_required
def profile_update(request):
info = Announcements.objects.filter(active=True)
categories = Category.objects.all()
user = request.user
profile = get_object_or_404(Profile, user=user)
if request.method == "POST":
u_form = UserUpdateForm(request.POST, instance=request)
p_form = ProfileUpdateForm(request.POST, request.FILES, instance=request.user.profile.user)
if u_form.is_valid() and p_form.is_valid():
u_form.save()
p_form.save()
messages.success(request, f'Acount Updated Successfully!')
return redirect('profile', profile.user.username)
else:
u_form = UserUpdateForm(instance=request.user)
p_form = ProfileUpdateForm(instance=request.user.profile)
context = {
'u_form': u_form,
'p_form': p_form,
}
return render(request, 'userauths/profile_update.html', context)
1条答案
按热度按时间ogq8wdun1#
我终于明白了,你需要做的是确保传入
request.user
,并在else中传入request.user.profile
:这表明表单是GET请求代码示例
首先获取您要尝试更新的模型的示例,然后在
request.POST
将传递到输入字段的数据的行中添加instance=model_instance_you_are_trying_to_update在我的示例中,它是配置文件,所以我使用了instance=Profile
,假设您的是一篇博客文章1.获取博客文章