保存更新配置文件表单Django失败

诺法尔扎希尔

我想使用isValid验证表单,但是有一个问题,即时通讯找不到,这里有什么问题吗?顺便说一句,如果我只是检查user_form.is_valid并尝试更改密码,它将起作用但profile_form无法起作用

当我在cmd中使用print(profile_form.errors)时会显示 <ul class="errorlist"><li>email<ul class="errorlist"><li>This Field Cannot be left blank</li></ul></li><li>nomor_hp<ul class="errorlist"><li>This Field Cannot be left blank</li></ul></li><li>email2<ul class="errorlist"><li>This field is required.</li></ul></li></ul>

这是我的网络外观 当我按编辑时,它们将显示要更新的表单

这是我的看法

@login_required(login_url='pengurusan/signin')
def post_update(request, pk):
    user = User.objects.get(id=pk)
    userr = User.objects.filter(id=pk)
    profilee = Profile.objects.filter(id=pk)
    if request.method == 'POST':
        #print(request.POST)
        user_form = PasswordChangeForm(user = request.user , data=request.POST)
        profile_form = ProfileForm(request.POST, instance=request.user)
        if user_form.is_valid() and profile_form.is_valid():
            user_form.save()
            profile_form.save()
            return render(request, 'pengurusan/index.html')
    user_form = PasswordChangeForm(user = request.user , data=request.POST)
    profile_form = ProfileForm(instance=user.profile)
    context={
        "user_form" : user_form,
        "profile_form" : profile_form,
        "user" : user,
        "userr" : userr,
        "profile" : user.profile,
        "profilee" : profilee,
    }
    return render(request, 'pengurusan/update-form.html', context)

这是我的表格

class Meta:
    model = User
    fields = ('email', 'username', 'password')
    widgets = { 'email' : forms.EmailInput(attrs={'class' : 'form-control form-control-user', 'id' : 'exampleInputEmail', 'placeholder' : 'Email Address', 'name' : 'email'}),
                'username': forms.TextInput(attrs={'class' : 'form-control form-control-user', 'id' : 'exampleFirstName', 'placeholder' : 'username', 'name' : 'username'})
    }
class ProfileForm(forms.ModelForm):
    class Meta:
        model = Profile
        fields = ['nama', 'nik', 'email', 'nomor_hp']
        widgets = { 'nama': forms.TextInput(attrs={ 'id' : 'exampleFirstName', 'placeholder' : 'Name'}),
                    'nik' : forms.NumberInput(attrs={'id' : 'exampleLastName', 'placeholder' : 'Nomor Identitas Penduduk'}),
                    'email' : forms.EmailInput(attrs={'id' : 'exampleInputEmail', 'placeholder' : 'Email Address', 'name' : 'email'}),
                    'nomor_hp' : forms.NumberInput(attrs={'size':'4', 'maxlength':'12', 'class':'phone', 'placeholder' : 'Nomor Handphone'}),
        }

这是我的模特

class Profile(models.Model):
    user = models.OneToOneField(User, null=True, blank=True, on_delete=models.CASCADE, related_name='profile')
    nama = models.CharField(max_length=30, blank=True)
    nik = models.CharField(max_length=30, blank=True)
    email = models.EmailField(max_length=75, blank=True)
    nomor_hp = models.TextField(max_length=15, blank=True)    
    def __str__(self):
        return self.user

如果您需要,这是我的urls.py

urlpatterns = [
    url(r'^$', views.signin), 
    url(r'index/$', views.index),
    url(r'signin/$', views.signin),
    url(r'signup/$', views.signup),
    url(r'signout/$', views.signout),
    url(r'^(?P<pk>[0-9]+)/edit/$', views.post_update, name='post_update'),
    path('activate/<uidb64>/<token>', views.VerificationView.as_view(), name="activate"),
    path('request-reset-link', views.RequestPasswordResetEmail.as_view(), name="request-password"),
    path('set-new-password/<uidb64>/<token>', views.CompletePasswordReset.as_view(), name="reset-user-password"),
]
Rgermain

profile_form = ProfileForm(request.POST, instance=request.user)

您传递了request.user,但您的ProfileForm是针对profil而不是user的,该实例是错误的,因此请按profil实例进行更改

profile_form = ProfileForm(request.POST, instance=request.user.profile)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将用户表单和配置文件保存在一个Django CBV中

来自分类Dev

使用 Django 表单编辑用户配置文件

来自分类Dev

Django-允许用户编辑配置文件,然后显示更新的配置文件字段

来自分类Dev

更新配置文件功能

来自分类Dev

脚本更新配置文件

来自分类Dev

如何在自定义用户配置文件创建表单中正确覆盖保存方法?

来自分类Dev

基于配置文件的动态 WTF 表单

来自分类Dev

链接到Skype配置文件失败

来自分类Dev

netctl启动配置文件失败

来自分类Dev

如何解决nginx更新配置文件后重启失败

来自分类Dev

新添加的字段没有显示在Django Oscar的“配置文件编辑”表单中?

来自分类Dev

django - 将注册表单信息链接到用户配置文件模型

来自分类Dev

通过上传表单将图像上传到 Django 用户配置文件

来自分类Dev

Django - 用户配置文件:唯一约束失败:main_userprofile.user_id

来自分类Dev

在Laravel 5中保存/更新用户配置文件

来自分类Dev

对 iCloud 的保存、更新或任何操作不适用于临时或应用商店配置文件

来自分类Dev

流星:更新多个配置文件值

来自分类Dev

无法在Testflight上更新配置文件

来自分类Dev

更新bash配置文件的问题

来自分类Dev

使用 Django 管理员用户表单添加内联用户配置文件表单时出现问题

来自分类Dev

Django信号配置文件创建问题

来自分类Dev

/ accounts / profile /中的Django AttributeError'用户'对象在更新配置文件时没有属性'get'

来自分类Dev

Django更新配置文件视图-仅允许登录用户编辑自己的帐户

来自分类Dev

用于在单独的表单上设计用户的配置文件模型

来自分类Dev

获取appId表单电容器配置文件

来自分类Dev

用于在单独的表单上设计用户的配置文件模型

来自分类Dev

设计嵌套表单而不创建配置文件

来自分类Dev

Django注册视图如何从用户表单中获取用户以将配置文件分配给用户

来自分类Dev

Xcode 11设置配置文件资格失败

Related 相关文章

  1. 1

    将用户表单和配置文件保存在一个Django CBV中

  2. 2

    使用 Django 表单编辑用户配置文件

  3. 3

    Django-允许用户编辑配置文件,然后显示更新的配置文件字段

  4. 4

    更新配置文件功能

  5. 5

    脚本更新配置文件

  6. 6

    如何在自定义用户配置文件创建表单中正确覆盖保存方法?

  7. 7

    基于配置文件的动态 WTF 表单

  8. 8

    链接到Skype配置文件失败

  9. 9

    netctl启动配置文件失败

  10. 10

    如何解决nginx更新配置文件后重启失败

  11. 11

    新添加的字段没有显示在Django Oscar的“配置文件编辑”表单中?

  12. 12

    django - 将注册表单信息链接到用户配置文件模型

  13. 13

    通过上传表单将图像上传到 Django 用户配置文件

  14. 14

    Django - 用户配置文件:唯一约束失败:main_userprofile.user_id

  15. 15

    在Laravel 5中保存/更新用户配置文件

  16. 16

    对 iCloud 的保存、更新或任何操作不适用于临时或应用商店配置文件

  17. 17

    流星:更新多个配置文件值

  18. 18

    无法在Testflight上更新配置文件

  19. 19

    更新bash配置文件的问题

  20. 20

    使用 Django 管理员用户表单添加内联用户配置文件表单时出现问题

  21. 21

    Django信号配置文件创建问题

  22. 22

    / accounts / profile /中的Django AttributeError'用户'对象在更新配置文件时没有属性'get'

  23. 23

    Django更新配置文件视图-仅允许登录用户编辑自己的帐户

  24. 24

    用于在单独的表单上设计用户的配置文件模型

  25. 25

    获取appId表单电容器配置文件

  26. 26

    用于在单独的表单上设计用户的配置文件模型

  27. 27

    设计嵌套表单而不创建配置文件

  28. 28

    Django注册视图如何从用户表单中获取用户以将配置文件分配给用户

  29. 29

    Xcode 11设置配置文件资格失败

热门标签

归档