微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何编辑表单集

如何解决如何编辑表单集

我有一个表单集,我希望用户能够编辑他们的答案。表单集是一个测验,分为 5 个部分。每个部分都有几个与该部分相关的问题。表单集中回答的每个问题都与 quiz_id 相关。我想我可以通过请求与该 quiz_id 相关的答案来进行编辑。我真的是 django 的新手,我不太清楚如何让这个编辑功能工作。下面是一些代码

模型:

 class Questionario(models.Model):

     nome_emp = models.CharField(max_length=100)
     num_func = models.CharField(max_length=4)
     setor = models.CharField(max_length=50)
     faturamento = models.CharField(max_length=20)
     nome_func = models.CharField(max_length=50)
     cargo = models.CharField(max_length=50)
     data = models.CharField(max_length=50)
     id_user = models.ForeignKey(User,on_delete=models.CASCADE)


class Pergunta(models.Model):
     question=models.CharField(max_length=200)
     tema=models.ForeignKey(Tema,on_delete=models.CASCADE)
     is_active=models.BooleanField(default=True)


 class Resposta(models.Model):
     RESPOSTAS=(
         (1,'discordo totalmente'),(2,'discordo'),(3,'Nem discordo nem concordo'),(4,'Concocordo'),(5,'Concordo totalmente')
         )
     id_questionario=models.ForeignKey(Questionario,on_delete=models.CASCADE)
     id_pergunta=models.ForeignKey(Pergunta,on_delete=models.CASCADE)

     resposta=models.IntegerField(choices=RESPOSTAS,default=0)

这是测验 5 部分中的 1 部分的视图函数。其他 4 部分是这一部分的副本:

def quest_perg1(request,quest_id):

questionario= Questionario.objects.get(pk=quest_id)
perguntas= Pergunta.objects.all()

numperg = Pergunta.objects.filter(tema=1).count()
perg = Pergunta.objects.filter(tema=1)

register = template.Library()

@register.filter
def list_item(lst,i):
    try:
        return lst[i]
    except:
        return None

RespostaFormset = modelformset_factory(Resposta,form=RespostaForm,extra=numperg)
if request.method == 'POST':
    
        
    formset = RespostaFormset(request.POST,queryset=Resposta.objects.none())
    i=0
    for r in formset:
        if r.is_valid():
            instances= r.save(commit=False)
            instances.id_questionario_id = questionario.id
            instances.id_pergunta_id = perg[i].id
            instances.save()
            i=i+1
           
    return redirect('perg2',quest_id=questionario.id)
        
    

else:
    formset = RespostaFormset(queryset=Resposta.objects.none())
    context={'formset':formset,'perguntas':perguntas,'questionario':questionario,'numperg':numperg,'perg':perg}

    return render(request,'quest_perg1.html',context)

这是第 1 部分的 html 部分:

<form method="POST"> 
                        
                {% csrf_token %} 
                {{ formset.management_form }}
                
                {% for form in formset %}

                    {{perg|get_loop:forloop.counter0}}:
                    <hr>
                    {{form}}
                    
                    <hr>
                    
                {% endfor %}

                <div class="row">
                    
                    <div class="col-md-6">
                        
                        <a  class="btn btn-success btn-block btn-lg" href="{% url 'update' questionario.id %}"> <i class="far fa-arrow-alt-circle-left"></i> Voltar </a> 
                                               
                    </div>
                    <div class="col-md-6">
                        <button type="submit" class="btn btn-success btn-block btn-lg"><i class="fas fa-database" ></i> Próxima página </button>
                    </div>
                </div>
                        
            </form>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。