繁体   English   中英

使用模板中的表单从Listview Django保存到数据库中

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM