У меня есть этот веб-сайт, который имеет одну цель - просмотр данных из базы данных в соответствии с выбранной пользователем темой.Мне удалось отобразить данные, но все данные, найденные в базе данных, отображаются, когда я нажимаю на кнопку просмотра, не обращая внимания на выбранную тему.Я не уверен, что это из-за того, как я организовал базу данных или проблема с моими формами.
Это модель, которую я использую:
from django.db import models
from home.choices import *
# Create your models here.
class Topic(models.Model):
topic_name = models.IntegerField(
choices = question_topic_name_choices, default = 1)
topic_question = models.ForeignKey('Question',
on_delete=models.CASCADE,
blank=True,
null=True)
topic_answer = models.ForeignKey('Answer',
on_delete=models.CASCADE,
blank=True,
null=True)
def __str__(self):
return '%s' % self.topic_name
class Image (models.Model):
image_file = models.ImageField()
def __str__(self):
return '%s' % self.image_file
class Question(models.Model):
question_description = models.TextField()
question_answer = models.ForeignKey( 'Answer',
on_delete=models.CASCADE,
blank=True,
null=True)
question_image = models.ForeignKey( 'Image',
on_delete=models.CASCADE,
blank=True,
null=True)
def __str__(self):
return '%s' % self.question_description
class Answer(models.Model):
answer_description = models.TextField()
answer_image = models.ForeignKey( 'Image',
on_delete=models.CASCADE,
blank=True,
null=True)
def __str__(self):
return '%s' % self.answer_description
Этофайл представлений:
from django.shortcuts import render, render_to_response, redirect
from .choices import *
from django.views.generic import TemplateView
from home.models import Topic, Image, Question, Answer
from home.forms import TopicForm
class QuizView(TemplateView):
template_name = "index.html"
def get(self, request):
form = TopicForm()
args = {"form": form}
return render(request, self.template_name, args)
def post(self, request):
form = TopicForm(request.POST)
if form.is_valid():
form = TopicForm()
posts = Question.objects.all()
args = {"form": form, "posts": posts}
return render(request, self.template_name, args)
Это файл форм:
from django import forms
from betterforms.multiform import MultiModelForm
from .models import Topic, Image, Question, Answer
from .choices import question_topic_name_choices
class TopicForm(forms.ModelForm):
class Meta:
model = Topic
fields = ['topic_name',]
# 'class': 'home-select-one'
Кстати, как я могу добавить это class
в ChoiceField
?
Это HTML-файл:
{% extends 'base.html' %}
{% block content %}
<h4>International Baccalaureate Physics</h4>
<form method="POST">
{% csrf_token %}
{{ form.as_p }}
<button type="submit" id="home-Physics-time-button">It is Physics Time</button>
</form>
{% for post in posts %}
<table style="margin: 10px auto; width: 90%; line-height: 35px;">
<tbody>
<tr>
<td style = "border: 2px solid #ffffff; padding: 1%;"> <strong>Question:</strong> <br>{{ post.topic_question}}</td>
</tr>
<tr>
<td style = "border: 2px solid #ffffff; padding: 1%;"> <strong>Answer:</strong> <br>{{ post.topic_answer }}</td>
</tr>
</tbody>
</table>
{% endfor %}
{% endblock content %}
Заранее спасибо!