即时建立一个小调查应用程序,我需要在一个页面中显示每个答案及其相应的答案,所以我用ListView和分页1来做它。
class TriviaView(ListView):
model = Preguntas
paginate_by = 1
template_name = 'trivias.html'
显然每个答案都必须保存在数据库中,但这里是我迷失的地方,我不知道如何保存在DB中,每个人都回答用户回复。
模板:
<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
如何在记录模型中保存用户选择的每个答案以及相应的答案?
对不起西班牙语属性,客户会这样问。
提前致谢。
答案 0 :(得分:0)
您可能希望使用相关对象语法。
用法是:
# get one question
p = Preguntas.objects.get(pk=1)
# get all responses
p.respuestas_set.all()
Django Docs 在这里:
https://docs.djangoproject.com/en/1.7/topics/db/queries/#related-objects