问题描述
我有一个表单集,我希望用户能够编辑他们的答案。表单集是一个测验,分为 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 (将#修改为@)