[英]Save in DB from Listview Django with a form in template
我正在构建一个小型调查应用程序,我需要在一个页面中显示每个答案及其对应的答案,所以我使用ListView并按1分页。
class TriviaView(ListView):
model = Preguntas
paginate_by = 1
template_name = 'trivias.html'
显然,每个答案都必须将其保存在数据库中,但这是我迷路的地方,我不知道如何将用户答复的每个答案保存在数据库中。
模板:
<form action="." method="post">{% csrf_token %}
<p>{% for pregunta in object_list %} {{pregunta.pregunta}}</p>
{% for respuesta in pregunta.respuestas_set.all %}
{% if page_obj.has_next %}
<a href="?page={{page_obj.next_page_number}}"><button type="button">{{respuesta.respuesta}}</button> </a>
{% endif %}
{% endfor %}
{% endfor %}
</form>
楷模:
class Trivia(models.Model):
nombre = models.CharField(max_length=100)
slug = models.SlugField(unique=True)
categoria = models.ForeignKey(Categorias)
contador = models.IntegerField()
def __str__(self):
return self.nombre
class Meta():
verbose_name_plural = "Trivias"
class Preguntas(models.Model):
trivia = models.ForeignKey(Trivia)
pregunta = models.CharField(max_length=100)
def __str__(self):
return self.pregunta
class Meta():
verbose_name_plural = "Preguntas"
class Respuestas(models.Model):
pregunta = models.ForeignKey(Preguntas)
respuesta = models.CharField(max_length=100)
def __str__(self):
return self.respuesta
class Meta():
verbose_name_plural = "Respuestas"
class Records(models.Model):
trivia = models.ForeignKey(Trivia)
user = models.CharField(max_length=200)
pregunta = models.CharField(max_length=200)
respuesta = models.CharField(max_length=200)
def __str__(self):
return self.user
如何在记录模型中保存用户选择的每个答案及其相应答案?
对不起,西班牙的属性,客户这样问。
提前致谢。
您可能要使用“相关对象”语法。
用法是:
# get one question
p = Preguntas.objects.get(pk=1)
# get all responses
p.respuestas_set.all()
Django文档在这里:
https://docs.djangoproject.com/en/1.7/topics/db/queries/#related-objects
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.