【问题标题】:Django Edit User profile modelDjango 编辑用户配置文件模型
【发布时间】:2020-07-07 17:49:57
【问题描述】:

views 函数将两个表单发送到模板并从中接收数据,它保存关于用户的更改(电子邮件、名字、姓氏),但不保存第二个表单

观看次数:

if request.method == 'POST':
    form = EditProfileForm(request.POST, instance=request.user)
    profile_form = UserProfileInfoForm(request.POST, instance=request.user)
    if form.is_valid() and profile_form.is_valid():
        user_form = form.save()
        custom_form = profile_form.save(False)
        custom_form.user = user_form
        custom_form.save()
        print(custom_form)
        return HttpResponseRedirect(reverse('profile'))
    return render(request, 'root/profile.html', {"client_info": client_info,
                                         "client_details": client_details,
                                         "form_1": EditProfileForm,
                                         "form_2": UserProfileInfoForm})

表格:

class EditProfileForm(forms.ModelForm):
    class Meta:
        model = User
        fields = (
            'email',
            'first_name',
            'last_name'
        )

class UserProfileInfoForm(forms.ModelForm):
    class Meta():
        model = UserProfileInfo
        fields = ("social_media_ins", "social_media_vk", "social_media_tk",
                  "social_media_fb", "social_media_youtube",)

【问题讨论】:

    标签: python django


    【解决方案1】:

    由于您尚未添加模型,我假设 UserProfileInfo 模型包含一个或多个文件字段。因此,要从表单中保存文件,您必须在表单实例中添加文件字段,即 profile_form = UserProfileInfoForm(request.POST, instance=request.user, files=request.FILES) 并在模板中添加 enctype="multipart/form-data" 在表单标签中。还要确保您在设置中添加了媒体根和媒体 url,并在 urls.py 文件中添加了 url。更多信息请看https://docs.djangoproject.com/en/3.0/topics/http/file-uploads/#file-uploads

    【讨论】:

    • 谢谢,问题出在个人资料表单中,应该是 profile_form = UserProfileInfoForm(request.POST, instance=request.user.userprofileinfo)
    • @Danil Melnikov 请总是添加相关模型。它们可能会有所帮助。
    猜你喜欢
    • 2014-06-17
    • 2014-04-29
    • 2020-07-03
    • 2018-10-05
    • 2018-02-20
    • 1970-01-01
    • 2011-04-08
    • 1970-01-01
    相关资源
    最近更新 更多