【问题标题】:How to instantiate a field of a formset to pre-populate?如何实例化表单集的字段以进行预填充?
【发布时间】:2016-05-23 17:03:16
【问题描述】:

我的视图现在允许我查看是否有两个问题,它显示了 2 个表格。我希望我现在可以用一个问题来实例化我的 2 个表单。这样用户不再只是简单地回答问题而不选择...

我的看法。 py:

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

我的模型.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) 是否可以放置这样的过滤器?

【问题讨论】:

标签: django django-forms populate formset formsets


【解决方案1】:

【讨论】:

  • 请在此处附上如何使用的示例。该链接及时不可用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-06
  • 1970-01-01
  • 2021-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多