【问题标题】:How to get the data from the views.py to postgresql as I want to create a seperate table for result I am working on a django-quiz app?如何从views.py获取数据到postgresql,因为我想为我正在使用django-quiz应用程序的结果创建一个单独的表?
【发布时间】:2019-10-12 08:18:07
【问题描述】:

我正在尝试将数据从我的 views.py 获取到数据库。如果views.py代码是这样的

views.py

from django.shortcuts import render
from .models import Questions


def home(request):
    choices = Questions.CAT_CHOICES
    print(choices)
    return render(request,
        'quiz/home.html',
        {'choices':choices})

def questions(request , choice):
    print(choice)
    ques = Questions.objects.filter(catagory__exact = choice)
    return render(request,
        'quiz/questions.html',
        {'ques':ques})

def result(request):
    print("result page")
    if request.method == 'POST':
        data = request.POST
        datas = dict(data)
        qid = []
        qans = []
        ans = []
        score = 0
        for key in datas:
            try:
                qid.append(int(key))
                qans.append(datas[key][0])
            except:
                print("Csrf")
        for q in qid:
            ans.append((Questions.objects.get(id = q)).answer)
        total = len(ans)
        for i in range(total):
            if ans[i] == qans[i]:
                score += 1
        # print(qid)
        # print(qans)
        # print(ans)
        print(score)
        eff = (score/total)*100
    return render(request,
        'quiz/result.html',
        {'score':score,
        'eff':eff,
        'total':total})
def about(request):
    return render(request,
        'quiz/about.html')

def contact(request):
    return render(request,
        'quiz/contact.html')

models.py

class Questions(models.Model):
    CAT_CHOICES = (
    ('sports','Sports'),
    ('movies','Movies'),
    ('maths','Maths'),
    ('generalknowledge','GeneralKnowledge')
    )
    question = models.CharField(max_length = 250)
    optiona = models.CharField(max_length = 100)
    optionb = models.CharField(max_length = 100)
    optionc = models.CharField(max_length = 100)
    optiond = models.CharField(max_length = 100)
    answer = models.CharField(max_length = 100)
    catagory = models.CharField(max_length=20, choices = CAT_CHOICES)

    class Meta:
        ordering = ('-catagory',)

    def __str__(self):
        return self.question

results.html

{% extends "base.html" %}

{% block title%}
  Result
{% endblock %}

{% block content%}
<div class="row">
  <div class="col-xs-12">
    <h3 class="center">
      Your Score is: {{ score }} / {{ total }}
    </h3>
  </div>
</div>
<div class="row">
  <div class="col-xs-12">
    <h3 class="center"
    {% if eff < 50.0 %} style="color:red"
    {% else %} style="color:green"
    {% endif %}
    >
      Your Efficiency is: {{ eff }} %
    </h3>
  </div>
</div>
{% endblock%}

我想在数据库中创建一个表来存储结果。这是一个 django-quiz 应用程序。我想创建单独的表来将结果存储在 postgresql 中。

我正在使用 django 来创建一个测验应用程序,但结果的计算存储在 views.py 中,但我想在 postgresql 中创建一个数据库并修改 models.py 以运行迁移。请帮忙

【问题讨论】:

  • 你不能从你的代码创建一个表并运行迁移,你可以做什么来创建一个表来存储结果数据并通过在该表中保存数据来创建行

标签: python django django-models django-templates


【解决方案1】:

只需为结果创建一个新模型,并通过外键将其链接到问题

class Results(models.Model):
    question = models.ForeignKey(Questions,\ 
    related_name='question',on_delete=models.CASCADE)
    answer = models.CharField(max_length = 250) 


    def __str__(self):
        return self.answer

answer = "some text"
qid = primairykey of answer object

Results.objects.create(question=qid, answer=answer)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-05
    • 2011-12-15
    • 2019-04-25
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多