Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 更新Django中的字段不起作用_Python_Django_Forms_Field - Fatal编程技术网

Python 更新Django中的字段不起作用

Python 更新Django中的字段不起作用,python,django,forms,field,Python,Django,Forms,Field,我的视图中有以下内容。py if request.method=='POST': form = ExtraForm(request.POST,instance=request.user) print ("hi") if form.is_valid(): form.save() print ("yes") print ("newform is ") else: form = ExtraForm(instance=request

我的视图中有以下内容。py

if request.method=='POST':
    form = ExtraForm(request.POST,instance=request.user)
    print ("hi")
    if form.is_valid():
        form.save()
        print ("yes")
    print ("newform is ")
else:
    form = ExtraForm(instance=request.user)
    context['form']=form
return render(request, "updateProfile.html",context)
现在发生的事情是,我没有得到任何错误,它做的一切都非常好,但它最终不会更新任何东西!!这对我来说毫无意义。知道发生了什么吗

外部形式:

class ExtraForm(forms.ModelForm):
    research_place = forms.CharField(max_length=256, label="", required=True, widget=forms.TextInput(attrs={'class': 'form-control','placeholder': 'First Name','required':True}))
    studies = forms.CharField(max_length=256, label="", required=True, widget=forms.TextInput(attrs={'class': 'form-control','placeholder': 'Last Name','required':True}))

    class Meta:
        model = RegisterUser
        fields = ['research_place','studies']
        widgets = {
            # 'image': ImageCropWidget,
        }
型号:

class RegisterUser(models.Model):
    user=models.OneToOneField(User,on_delete=models.CASCADE)

    biography = models.CharField(max_length=1000000,blank=True)
    research_place = models.CharField(max_length=1000000,blank=True)
    studies = models.CharField(max_length=1000000,blank=True)

    image = models.ImageField(blank=True,null=True,upload_to='uploaded_images',default ="uploaded_images/defaultReal.jpg")
    # cropping = ImageRatioField('image','200x200',size_warning=True) #width x height

    avatar_thumbnail = ImageSpecField(source='image',
                                    processors=[ResizeToFill(200, 200)],
                                    format='JPEG',
                                    options={'quality': 60})

    activation_key = models.CharField(max_length=50)
    key_expires = models.DateTimeField()
    class Meta:
        permissions = (
            ("has_uploaded", ("Has uploaded")),
            ("is_authenticated", ("Is authenticated")),
        )

看起来表单根本无效。添加
else
子句并检查:

更新后:

您将错误的用户传递到表单<代码>请求。用户是
用户
类型,而您尝试更新
注册表项。您应该更新该行:

form = ExtraForm(request.POST, instance=request.user)

同样适用于
其他
零件:

form = ExtraForm(instance=RegisteredUser.objects.get(user=request.user))

当表格有效时,您会返回什么?在这种情况下,
context
的值是多少?@ozgur我在context中没有任何内容,但是当我检查数据库时,更改没有通过。没有错误,它工作正常。它在form.save()1之后打印(“成功”)。您是否重写了表单的
save
方法?2.您是否碰巧用
commit=False
调用了save?3.你试过上面的代码吗?4.您还可以给我们看一下
外部形式
类吗?5.这是view函数中的全部代码还是只是其中的一部分?
form = ExtraForm(request.POST, instance=RegisteredUser.objects.get(user=request.user))
form = ExtraForm(instance=RegisteredUser.objects.get(user=request.user))