Django新手求助:Admin视图无法显示数据库模型
解决Django模型无法在Admin视图显示的问题
嘿,作为Django新手遇到这个问题太正常啦!我帮你一步步排查和解决:
最核心的原因:忘记在Admin中注册模型
Django不会自动把你的模型加到Admin后台,必须手动在对应app的admin.py里注册它。你需要做的是:
- 打开你的Blog app目录下的
admin.py(如果没有就新建一个) - 加入以下代码:
from django.contrib import admin from .models import Blog # 注册Blog模型到Admin后台 admin.site.register(Blog)
检查models.py里的小问题
看你给出的代码,还有两个需要修正的地方,不然可能会导致其他错误(间接影响Admin显示):
app_name = 'Blog'不应该放在models.py里,这个是用来做URL命名空间的,应该移到该app的urls.py文件中。publish字段的default = ...没有补全具体值,你需要改成default='draft'(对应你定义的PUBLISH_CHOICES里的选项),不然模型迁移会失败,Admin自然也看不到模型。
修正后的models.py核心代码:
from django.db import models PUBLISH_CHOICES = ( ('draft','Draft'), ('publish','Publish'), ('private','Private'), ) class Blog(models.Model): id = models.BigAutoField(primary_key = True) title = models.CharField(max_length = 200) body = models.CharField(max_length = 500, null = True) publish = models.CharField(max_length = 120, choices = PUBLISH_CHOICES, default='draft') # 建议加上这个方法,让Admin里显示文章标题而非默认的"Blog object" def __str__(self): return self.title
最后确认App已添加到INSTALLED_APPS
确保你的Blog app已经在项目根目录的settings.py的INSTALLED_APPS列表里:
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'Blog', # 这里必须包含你的app名称 ]
做完这些步骤后,运行python manage.py makemigrations和python manage.py migrate(如果之前有迁移错误的话),然后重启服务器,再访问Admin后台就能看到你的Blog模型啦!
内容的提问来源于stack exchange,提问作者Dipesh Sinha
相关产品推荐
相关产品推荐

