Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.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
django更新模型表单_Django_Modelform - Fatal编程技术网

django更新模型表单

django更新模型表单,django,modelform,Django,Modelform,我有一个模型如下 class UserPrivacy(models.Model): user = models.ForeignKey(User) profile = models.SmallIntegerField(default=1, choices=PRIVACY_TYPE) contact = models.SmallIntegerField(default=1, choices=PRIVACY_TYPE) friends = models.SmallInt

我有一个模型如下

class UserPrivacy(models.Model):
    user = models.ForeignKey(User)
    profile = models.SmallIntegerField(default=1, choices=PRIVACY_TYPE)
    contact = models.SmallIntegerField(default=1, choices=PRIVACY_TYPE)
    friends = models.SmallIntegerField(default=1, choices=PRIVACY_TYPE)
    location = models.SmallIntegerField(default=1, choices=PRIVACY_TYPE)
class PrivacyForm(ModelForm):
    class Meta:
        model = UserPrivacy
        exclude = ('user','location')
我的模型如下

class UserPrivacy(models.Model):
    user = models.ForeignKey(User)
    profile = models.SmallIntegerField(default=1, choices=PRIVACY_TYPE)
    contact = models.SmallIntegerField(default=1, choices=PRIVACY_TYPE)
    friends = models.SmallIntegerField(default=1, choices=PRIVACY_TYPE)
    location = models.SmallIntegerField(default=1, choices=PRIVACY_TYPE)
class PrivacyForm(ModelForm):
    class Meta:
        model = UserPrivacy
        exclude = ('user','location')
我的函数如下所示,用于显示和更新表单

def show_privacy(request):
    if not request.user.is_authenticated():
        return HttpResponseRedirect('/')

    if request.method == 'POST':
        form = PrivacyForm(request.POST, instance=User.objects.get(pk=request.session['id']))
        if form.is_valid():
            form.save()

    else:
        form = PrivacyForm()

    return render_to_response('settings_privacy.html', {'form': form}, context_instance=RequestContext(request))

数据库中我的用户id为1。。但当我发布表单时,它永远不会更新。我知道form.save()被调用是因为在那里放置了一个打印文件,它会显示在开发服务器上。

Andy Hume对您的问题的评论是正确的

您有一个基于UserPrivacy模型的ModelForm,但是您正在向它传递一个User的实例

您要做的是:

form = PrivacyForm(request.POST, instance=UserPrivacy.objects.get(user=request.user)

安迪·休谟对你问题的评论是正确的

您有一个基于UserPrivacy模型的ModelForm,但是您正在向它传递一个User的实例

您要做的是:

form = PrivacyForm(request.POST, instance=UserPrivacy.objects.get(user=request.user)

我可能对表单有些生疏,但为什么要将用户对象传递到UserPrivacy表单中?您通常不会传入UserPrivacy实例吗?我想根据登录的用户更新项目。但是用户模型中的字段如何映射到UserPrivacy模型中的字段?您只是想设置UserPrivacy表单的user字段吗?我可能对表单有点生疏,但为什么要将用户对象传递到UserPrivacy表单中?您通常不会传入UserPrivacy实例吗?我想根据登录的用户更新项目。但是用户模型中的字段如何映射到UserPrivacy模型中的字段?您只是想设置UserPrivacy表单的用户字段吗?