首页 > 解决方案 > 自定义 django 管理员

问题描述

这是我的测验模型,

class Quiz(Base):
    name = models.CharField(max_length=512, null=True, blank=True)
    genre = models.ForeignKey(Genre, on_delete=models.CASCADE, default="", )

这是一个问题,

class Question(Base):
    text = models.TextField()
    quiz = models.ForeignKey(Quiz, on_delete=models.CASCADE, null=True)
    image = models.ImageField(upload_to=question_image_path, null=True)

这是一个答案,

class Answer(Base):
    text = models.TextField(null=True)
    question = models.ForeignKey(Question, on_delete=models.CASCADE, null=True, blank=True)
    correct = models.BooleanField(default=False)

我想在一页中显示整个测验创建表单,而不是常规的 django 管理显示。我如何自定义 django admin 来执行此操作。

标签: pythondjangodjango-admin

解决方案


首先打开您的 urls.py 文件并根据需要编写路径:

from django.urls import path
from . import views
path('', views.quiz, name = 'quiz' ),

打开您的 views.py 文件并编写有关您的测验的函数:

from django.shortcuts import render
from .models import Quiz

def quiz(request):
    allQuiz = Quiz.objects.all()
    context = {
        'quizes': allQuiz
    }
    return render(request, '<appNameInsideYourTemplatesDirectry>/quiz.html', context )

现在,在您的模板中创建 quiz.html,如下所示:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<ul>
{% for quiz in quizes %}
    <li>{{quiz}}</li>
{% endfor %}    
</ul>

</body>
</html>

推荐阅读