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

迁移Django数据模型后管理后台未显示模型的问题求助

问题:Django管理后台不显示自定义模型怎么办?

我在models.py里定义了Block和Test两个数据模型,并且已经执行了迁移操作,迁移过程看起来是成功的:

In [58]: ! python manage.py makemigrations
Migrations for 'forums':
  forums/migrations/0002_test.py
    - Create model Test
In [60]: ! python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, forums, sessions
Running migrations:
  Applying forums.0002_test... OK

我的models.py代码如下:

class Block(models.Model):
    name = models.CharField("block name", max_length=100)
    desc = models.CharField("block description", max_length=100)
    admin = models.CharField("block admin", max_length=100)
class Test(models.Model):
    name = models.CharField("block name", max_length=100)
    desc = models.CharField("block description", max_length=100)
    admin = models.CharField("block admin", max_length=100)

但是访问Django管理后台时,页面里完全看不到这两个模型的入口,请问该怎么解决这个问题?


解决方法

这是Django开发里很常见的小问题——Django并不会自动把你定义的模型加入到管理后台,你得手动在对应app的admin.py文件里完成注册,具体步骤如下:

  1. 找到你app目录下的admin.py文件(如果没有的话,直接新建一个同名文件就行)
  2. 在文件中导入你定义的模型,然后用admin.site.register()方法完成注册

基础注册示例

from django.contrib import admin
# 导入models里的两个自定义模型
from .models import Block, Test

# 把模型注册到admin后台
admin.site.register(Block)
admin.site.register(Test)

保存文件后刷新Django管理后台页面,你就能看到Block和Test两个模型的入口了。

进阶:自定义admin显示样式

如果想要让模型在admin里的交互更友好(比如列表页直接显示关键字段),可以创建自定义的ModelAdmin类,示例如下:

from django.contrib import admin
from .models import Block, Test

# 自定义Block模型在admin的显示规则
class BlockAdmin(admin.ModelAdmin):
    # 列表页要展示的字段
    list_display = ('name', 'desc', 'admin')
    # 支持搜索的字段
    search_fields = ('name',)

# 注册时关联自定义的显示规则
admin.site.register(Block, BlockAdmin)
admin.site.register(Test)

这样设置后,在admin的Block列表页就能直接看到name、desc、admin三个字段,还能通过名称快速搜索,使用起来会顺手很多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:47:59