Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.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_Database_Forms - Fatal编程技术网

Python Django:使用表单更新用户不会传递任何错误,但不会更改数据库

Python Django:使用表单更新用户不会传递任何错误,但不会更改数据库,python,django,database,forms,Python,Django,Database,Forms,嘿,伙计们,这是代码: def updateProfile(request): context={} context['localUser'] = request.user instance = get_object_or_404(User, id=request.user.id) form = ExtraForm(instance=instance) print (instance) print (form) if request.m

嘿,伙计们,这是代码:

def updateProfile(request):
    context={}
    context['localUser'] = request.user

    instance = get_object_or_404(User, id=request.user.id)
    form = ExtraForm(instance=instance)
    print (instance)
    print (form)

    if request.method=='POST':
        print ("hi")
        newForm = form.save(commit=False)
        newForm.research_place = request.POST.get("research_place")
        newForm.studies = request.POST.get("studies")
        # if newForm.is_valid():
            # print ("success)")
        print ("newform is ")
        print (newForm)
        print (newForm.research_place)
        print (newForm.studies)
        print (newForm.id)
        print (newForm.first_name)
        print (newForm.email)
        newForm.save()
    return render(request, "updateProfile.html",context)
它运行,并且所有值都正确传递。但是,它不会保存在数据库中。作为参考,这是我的ExtraForm表单

class ExtraForm(forms.ModelForm):
    class Meta:
        model = RegisterUser
        fields = ['image','research_place','studies']
        widgets = {
            # 'image': ImageCropWidget,
        }
这就得到了RegisterUser模型

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")),
        )
然而,在HTML中,我使用硬编码表单,因为在这种情况下,它只是稍微容易一点,因为我需要根据传递到HTML模板中的上下文变量设置输入值

编辑:我也在尝试以下方法,但没有效果

instance = get_object_or_404(User, id=request.user.id)
form = ExtraForm(request.POST or None,instance=instance)
print (instance)
print (form)

if request.method=='POST':
    print ("hi")
    # newForm = form.save(commit=False)
    form.research_place = request.POST.get("research_place")
    form.studies = request.POST.get("studies")
    if form.is_valid():
        print ("yes")
        form.save()

看看这个stackoverflow问题:,我认为这可能有助于解决您所面临的问题having@Eli因此,我将其更改为更像正确答案实例=get_object_或_404(User,id=request.User.id)print(instance)if request.method='POST':print(“hi”)instance.research_place=request.POST.get(“research_place”)instance.studies=request.POST.get(“studies”)instance.save(),但这也不起作用