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

如何在Django 2.0 Admin中创建多个关联对象?

在Django Admin中创建多个关联对象的解决方案

嘿,针对你用Django 2.0开发的这两个模型,要实现在Admin里同时创建多个关联的ChapterQuestion对象,用Django自带的InlineModelAdmin就完全能搞定,这是专门用来处理关联模型的内联编辑功能,非常方便。

先给你理清楚具体步骤:

1. 先完善你的ChapterQuestion模型

你代码里的definition字段没写完,先补全它,比如用TextField存定义内容:

class ChapterQuestion(models.Model):
    chapter = models.ForeignKey(Chapter, on_delete=models.CASCADE)
    word = models.CharField(max_length=250)
    definition = models.TextField(blank=False)  # 补全字段定义

    def __str__(self):
        return self.word

2. 在admin.py中定义内联类

创建一个继承自admin.TabularInline或admin.StackedInline的类,用来把ChapterQuestion关联到Chapter的Admin页面里:

  • TabularInline:以表格形式展示关联对象,节省空间,适合字段少的场景
  • StackedInline:每个关联对象单独堆叠展示,字段多的时候更清晰

示例代码:

from django.contrib import admin
from .models import Chapter, ChapterQuestion

# 定义ChapterQuestion的内联类
class ChapterQuestionInline(admin.TabularInline):
    model = ChapterQuestion
    extra = 3  # 默认显示3个空的输入表单,方便直接添加
    # 可选设置:max_num=10 限制最多添加10个问题,min_num=1 要求至少添加1个

# 注册Chapter的Admin,并关联内联类
class ChapterAdmin(admin.ModelAdmin):
    inlines = [ChapterQuestionInline]  # 把内联类加进来

# 注册两个模型
admin.site.register(Chapter, ChapterAdmin)
admin.site.register(ChapterQuestion)

3. 效果说明

做完上面的配置后,当你在Django Admin里创建或编辑Chapter对象时,页面下方会出现一个表格区域,默认显示3个空的ChapterQuestion输入框,你可以直接填写多个问题的word和definition,保存Chapter的时候,这些关联的问题会自动被创建并关联到当前Chapter上。

如果你想调整默认显示的空表单数量,修改extra的值就行;要是想限制添加的数量,加上max_num和min_num参数就好。

最后别忘了,如果你刚才补全了ChapterQuestion的字段,先运行数据库迁移命令:

python manage.py makemigrations
python manage.py migrate

重启服务器后,登录Admin就能看到效果啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:19:35