Django使用数据库中的字段预填充表单

dan*_*ana 2 forms django instance populate

我有一个隐私表,其中我选择了当访问用户个人资料时应隐藏哪些应用程序。该表单包含多个复选框,用户检查他想隐藏的内容。我想要的是,当用户访问此表单时,该表单将成为已保存的隐私表单的一个实例(如果存在)。我的意思是,如果我已经选中了隐藏应用程序1,则当我再次访问该表单时,将选中相应的复选框。

我的代码:

def save_privacy(request):
   if request.method == 'POST':
        try:
           u = Privacy.objects.get(user_privacy = request.user)
           form = PrivacyForm(request.POST, instance=u )  
        except ObjectDoesNotExist:
             form = PrivacyForm(request.POST, request.FILES)
        if form.is_valid():           

           new_obj = form.save(commit=False)
           new_obj.user_privacy = request.user

           new_obj.save()
           return HttpResponseRedirect('/accounts/private_profile/')    
   else:
           form = PrivacyForm()     
   return render_to_response('privacy/set_privacy.html', {
           'form': form,
           }, 
          context_instance=RequestContext(request)) 
Run Code Online (Sandbox Code Playgroud)

和我的表格:

class PrivacyForm(ModelForm):
    class Meta:
          model = Privacy
          fields = ['restrict_cv','restrict_blog','friends_of_friends','restrict_followers','restrict_following']
Run Code Online (Sandbox Code Playgroud)

Dan*_*man 5

您只需在else子句中实例化表单时就需要设置实例,就像对POST一样。