【问题标题】:django - How to auto-populate existing data in django form while updatingdjango - 如何在更新时以 django 形式自动填充现有数据
【发布时间】:2022-01-12 13:17:31
【问题描述】:

我想用现有数据在 django 中自动填充我的更新表单,但 instance=request.userinstance=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)

【问题讨论】:

    标签: python django django-forms


    【解决方案1】:

    我终于想通了,您需要确保在 else 中传递 request.userrequest.user.profile:这表明表单是一个 GET 请求

    【讨论】:

      猜你喜欢
      • 2019-08-31
      • 2020-07-09
      • 1970-01-01
      • 1970-01-01
      • 2010-09-29
      • 2020-09-21
      • 2019-01-17
      • 2021-11-19
      • 2018-12-22
      相关资源
      最近更新 更多