2016-02-12 7 views
1

Мои взгляды позволяют мне посмотреть, есть ли у меня два вопроса, это показывает мне 2 формы. Хотелось бы, чтобы я мог создать экземпляры двух форм по одному вопросу. Чтобы пользователь больше не ответил на вопрос без выбора ...Как создать экземпляр поля набора форм для предварительной заполнения?

Мои взгляды. ру:

def access(request, instance): 
    replies = Reply.objects.all() 
    pages = Page.objects.all() 
    numPages = Page.objects.get(pk=instance) 
    questions = Question.objects.filter(page=instance) 
    length_questions = len(questions) 
    logged_user = get_logged_user_from_request(request) 
    ReplyFormSet = modelformset_factory(model=Reply, form=ReplyForm, extra=length_questions, can_delete=True) 
    formset = ReplyFormSet(request.POST, queryset=Reply.objects.none()) 
    if request.method == 'POST': 
     formset = ReplyFormSet(request.POST, queryset=Reply.objects.none()) 
     if formset.is_valid(): 
      new_instances = formset.save(commit=False) 
      for new_instance in new_instances: 
       new_instance.user = logged_user 
       new_instance.save() 
      return HttpResponseRedirect('/baseVisite/') 
     else: 
      messages.add_message(request, messages.INFO, 'Le formulaire est incorrecte !') 
      return render_to_response('polls/error.html', context_instance=RequestContext(request)) 
    else: 
     formset = ReplyFormSet(queryset=Reply.objects.none()) 
    return render_to_response('polls/access.html', { 
    'formset': formset, 
    'questions':questions, 
    'logged_user':logged_user, 
    'numPages' : numPages 
    }) 

мой models.py:

class Page(models.Model): 
    title = models.CharField(max_length=30) 


    def __str__(self): 
     return self.title 

class Question(models.Model): 
    label = models.CharField(max_length=30) 
    page = models.ManyToManyField(Page) 

    def __str__(self): 
      return self.label 

class Reply(models.Model): 
    question = models.ForeignKey(Question) 
    user = models.ForeignKey(Personne) 
    answer = models.CharField(max_length=30) 
    creationDate = models.DateTimeField(default=django.utils.timezone.now) 

    def __str__(self): 
     return str(self.answer) 

и мой forms.py:

class ReplyForm(forms.ModelForm): 
    class Meta: 
     model = Reply 
     exclude = ('user','creationDate') 

Я хотел бы заполнить поля «вопросы» этим фильтром -> Question.objects.filter (page = instance) Можно ли поместить фильтр следующим образом?

+0

попытался посмотреть на это? http://stackoverflow.com/questions/622982/django-passing-custom-form-parameters-to-formset –

+0

Я просто смотрю, но я не думаю, что это соответствует предварительно заполненному –

ответ