2010-06-22 13 views
1

J'ai un formulaire de confidentialité, dans lequel je sélectionne quelle application doit être cachée quand on accède au profil d'un utilisateur. Le formulaire contient plusieurs cases à cocher, et l'utilisateur vérifie ce qu'il veut cacher. Ce que je veux, c'est que lorsqu'un utilisateur accède à ce formulaire, le formulaire soit une instance du formulaire de confidentialité déjà enregistré, s'il en existe un. Je veux dire, si j'ai déjà coché masquer l'application 1, lorsque j'accède de nouveau au formulaire, la case à cocher correspondante doit être cochée.Formulaire de pré-remplissage Django avec les champs de la base de données

mon code:

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)) 

et ma forme:

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

Répondre

5

Vous avez juste besoin de régler l'instance lorsque vous instancier la forme dans la clause else, comme vous le faites pour le POST.

+0

oui, vous avez raison! travaille maintenant! THX! – dana