Джанго предварительно заполнить форму с полями из базы данных - PullRequest
2 голосов
/ 22 июня 2010

У меня есть форма конфиденциальности, в которой я выбираю, какое приложение должно быть скрыто при доступе к профилю пользователя. Форма содержит несколько флажков, и пользователь проверяет, что он хочет скрыть. Что я хочу, чтобы, когда пользователь обращается к этой форме, форма была экземпляром уже сохраненной формы конфиденциальности, если она существует. Я имею в виду, что если я уже проверил скрытие приложения 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)) 

и моя форма:

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

1 Ответ

5 голосов
/ 22 июня 2010

Вам просто нужно установить экземпляр, когда вы создаете экземпляр формы в предложении else, точно так же, как вы делаете это для POST.

...