You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django Admin中创建含多道试题的Test(考试)模型?

在Django Admin中直接创建带试题的考试(Test)

完全不用从零编写逻辑!Django Admin自带的内联(Inline)功能就能完美解决你的需求,刚好适配你这种用显式中间表TestQuestion关联Test和Question的场景。下面是具体的实现步骤:

1. 先修正模型的小细节(可选但推荐)

你的模型代码里有几个小问题需要调整,同时重写__str__方法能让Admin后台的选择体验更友好:

class Question(models.Model):
    # CharField必须指定max_length参数
    question = models.CharField(max_length=255)
    # Boolean()是旧写法,应该用BooleanField()
    answer_a = models.BooleanField()
    solution_a = models.BooleanField()
    # 其他选项字段...

    def __str__(self):
        # 让下拉框显示试题内容,而非默认的"Question object"
        return self.question

class Test(models.Model):
    name = models.CharField(max_length=255)
    # 其他字段...

    def __str__(self):
        # 列表页和选择框直接显示考试名称
        return self.name

class TestQuestion(models.Model):
    """将多道试题关联到一个考试"""
    # 别忘了添加on_delete参数,这是Django外键的必填项
    test_fk = models.ForeignKey(Test, on_delete=models.CASCADE)
    question_fk = models.ForeignKey(Question, on_delete=models.CASCADE)

2. 配置Admin内联

在你的admin.py文件中,创建TestQuestion的内联类,并关联到Test的Admin配置里:

from django.contrib import admin
from .models import Test, Question, TestQuestion

# 创建内联类,用于在Test的编辑页面直接添加关联试题
class TestQuestionInline(admin.TabularInline):
    model = TestQuestion
    extra = 3  # 默认显示3个空的试题添加框,可根据需求调整数量
    fields = ['question_fk']  # 只显示试题选择框,test_fk会自动关联当前编辑的Test
    exclude = ['test_fk']  # 隐藏test_fk字段,避免用户手动修改

# 注册Test模型,并绑定内联类
@admin.register(Test)
class TestAdmin(admin.ModelAdmin):
    inlines = [TestQuestionInline]

# 注册Question模型,方便提前批量创建试题
@admin.register(Question)
class QuestionAdmin(admin.ModelAdmin):
    list_display = ['question', 'solution_a']  # 列表页直接显示试题和正确答案

3. 效果说明

配置完成后重启Django服务,进入Admin后台就能看到效果:

  • 你可以先在「Question」页面创建好所有需要的试题;
  • 当创建或编辑「Test」时,页面下方会出现一个表格(如果换成StackedInline会变成堆叠样式),你可以直接从下拉框选择已有的试题,或者点击下拉框旁的加号直接在当前页面新建试题;
  • 保存Test时,关联的TestQuestion记录会自动生成,不需要额外编写关联逻辑。

如果以后你的TestQuestion中间表需要添加额外字段(比如试题分数、排序顺序),只要把新增字段加到fields列表里,内联配置依然能正常工作。

内容的提问来源于stack exchange,提问作者Saleri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:46:18