Python 如何编辑表单集
我有一个表单集,我希望用户能够编辑他们的答案。表格集是一个测验,分为5个部分。每个部分都会回答一些与该部分相关的问题。表单集中回答的每个问题都与测验id相关。我想我可以通过请求与该测验id相关的答案进行编辑。我对django非常陌生,我不太明白如何让这个编辑功能工作。以下是一些编码: 模型: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
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%}
普罗西玛·帕吉纳