Как получить данные из views.py в postgresql, поскольку я хочу создать отдельную таблицу для результата, над которым я работаю в приложении django-quiz? - PullRequest
0 голосов
/ 12 октября 2019

Я пытаюсь получить данные из моего 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-викторины. Я хочу создать отдельную таблицу для хранения результатов в postgresql.

Я работаю над django, чтобы создать приложение для викторины, но вычисление результата хранится в views.py, но я хочу создать базу данных в postgresql и изменить файл models.py для запуска миграций. . Пожалуйста, помогите

1 Ответ

0 голосов
/ 12 октября 2019

Просто создайте новую модель для результатов и свяжите ее иностранным ключом с вопросом

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...