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表单的用户字段吗?