迁移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文件里完成注册,具体步骤如下:
- 找到你app目录下的
admin.py文件(如果没有的话,直接新建一个同名文件就行) - 在文件中导入你定义的模型,然后用
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
相关产品推荐
相关产品推荐

