【问题标题】:Save in DB from Listview Django with a form in template使用模板中的表单从 Listview Django 保存在数据库中
【发布时间】:2015-05-03 13:22:27
【问题描述】:

我正在构建一个小型调查应用程序,我需要在一个页面中显示每个答案及其对应的答案,所以我使用 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

如何在记录模型中保存用户选择的每个答案及其对应的答案?

对不起,西班牙的属性,客户这样问。

提前致谢。

【问题讨论】:

标签: python django django-forms django-views django-class-based-views


【解决方案1】:

您可能希望使用相关对象语法。

用法如下:

# 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

【讨论】:

  • 谢谢,但我怎样才能获得用户在模板中选择的选项?那就是你说的在 TriviaView 的 get_queryset 中?
  • @dfrojas 您可以将模板中的用户选项作为 URL 参数发送,然后对其进行处理。就像一个 Django forms.py 表单。
猜你喜欢
  • 1970-01-01
  • 2013-03-24
  • 2016-08-09
  • 2021-08-25
  • 2018-10-09
  • 2019-01-25
  • 2020-10-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多