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

在Django Admin的QuestionsAdmin中实现关联Answer的全权限管理

如何在QuestionsAdmin(admin.ModelAdmin)类中配置,使Django Admin的Question管理页可查看、增删改所有关联Answer?

代码示例

class Answer(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid4)
    value = models.TextField()
    correct = models.BooleanField()
    question = models.ForeignKey("Question", models.DO_NOTHING)  # 注:原代码中"Questions"需与模型类名保持一致,修正为"Question"

class Question(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid4)
    content = models.TextField()

解决方案

要在Question的Admin页面直接管理关联的Answer,需使用Django Admin的InlineModelAdmin类,它支持在父模型编辑页内直接操作关联子模型。具体配置步骤如下:

  1. 定义Answer的Inline管理类
    可选TabularInline(表格紧凑布局)或StackedInline(垂直堆叠布局),按需选择即可。

  2. 在QuestionsAdmin中注册Inline类
    将定义好的Inline类加入inlines列表,即可在Question的编辑页显示关联Answer的管理区域。

完整配置代码:

from django.contrib import admin
from .models import Question, Answer

# 定义Answer的Inline管理类
class AnswerInline(admin.TabularInline):
    model = Answer
    extra = 1  # 默认显示1个空输入框,用于快速新增Answer
    can_delete = True  # 允许删除关联的Answer
    show_change_link = True  # 可选:显示跳转到Answer单独编辑页的链接

# 配置Question的Admin类
class QuestionsAdmin(admin.ModelAdmin):
    inlines = [AnswerInline]
    # 可按需添加其他配置,比如list_display = ['content']用于列表页显示问题内容

# 注册模型到Admin站点
admin.site.register(Question, QuestionsAdmin)
admin.site.register(Answer)  # 可选:单独注册Answer,方便直接管理单个Answer

效果说明

配置完成后,进入Django Admin的Question编辑(或新增)页面时,页面下方会出现关联Answer的管理区域:

  • 已关联的Answer会以表格/堆叠形式展示,可直接修改内容、勾选是否正确
  • 可通过默认空输入框快速新增Answer
  • 每个Answer条目旁会有删除按钮,直接删除关联的Answer
  • 若开启show_change_link,可点击链接跳转到Answer的单独编辑页进行更细致的操作

内容的提问来源于stack exchange,提问作者Bartłomiej Bartnicki

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 15:55:33