Python 如何编辑表单集

Python 如何编辑表单集,python,django,crud,formset,Python,Django,Crud,Formset,我有一个表单集,我希望用户能够编辑他们的答案。表格集是一个测验,分为5个部分。每个部分都会回答一些与该部分相关的问题。表单集中回答的每个问题都与测验id相关。我想我可以通过请求与该测验id相关的答案进行编辑。我对django非常陌生,我不太明白如何让这个编辑功能工作。以下是一些编码: 模型: class Questionario(models.Model): nome_emp = models.CharField(max_length=100) num_func = mo

我有一个表单集,我希望用户能够编辑他们的答案。表格集是一个测验,分为5个部分。每个部分都会回答一些与该部分相关的问题。表单集中回答的每个问题都与测验id相关。我想我可以通过请求与该测验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)
以下是html部分,即第1部分的内容:

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

{%csrf_令牌%}
{{formset.management_form}
{formset%中表单的%s}
{{perg}get|u循环:forloop.counter0}:

{{form}}
{%endfor%} 普罗西玛·帕吉纳