如何为Golang+PostgreSQL项目搭建Django管理后台并映射数据库表
用Django为已有PostgreSQL数据库搭建Admin后台
步骤1:初始化Django项目并配置数据库
先创建全新的Django项目:
django-admin startproject pg_admin_backend cd pg_admin_backend
打开settings.py,找到DATABASES配置块,替换为你的PostgreSQL连接信息:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': '你的数据库名', 'USER': '数据库用户名', 'PASSWORD': '数据库密码', 'HOST': '数据库地址(本地填localhost)', 'PORT': '数据库端口(默认5432)', } }
步骤2:创建Django应用并自动生成模型
先创建一个用于管理现有表的应用:
python manage.py createapp db_admin
用Django的inspectdb命令扫描PostgreSQL数据库,自动生成对应的数据模型:
python manage.py inspectdb > db_admin/models.py
打开生成的db_admin/models.py,注意每个模型类里的managed = False属性——这会告诉Django不要自动创建/删除这些表(毕竟表已经在Golang项目的数据库中存在),如果后续需要通过Django修改表结构,可以手动将其改为True。
步骤3:注册模型到Admin面板
打开db_admin/admin.py,导入生成的模型并注册到Admin后台:
from django.contrib import admin from .models import 模型名1, 模型名2, 模型名3 # 替换为你实际的模型类名 admin.site.register(模型名1) admin.site.register(模型名2) admin.site.register(模型名3)
如果需要自定义Admin面板的显示样式(比如列表展示字段、搜索功能),可以自定义Admin类:
class 模型名1Admin(admin.ModelAdmin): list_display = ('字段1', '字段2', '字段3') search_fields = ('字段1', '字段2') admin.site.register(模型名1, 模型名1Admin)
步骤4:同步迁移记录(伪迁移)
由于数据库表已经存在,不需要执行真实迁移,只需让Django的迁移系统记录这些表的状态:
python manage.py makemigrations python manage.py migrate --fake
步骤5:创建超级用户并启动服务
创建Admin后台的超级用户:
python manage.py createsuperuser
启动Django开发服务器:
python manage.py runserver
访问http://localhost:8000/admin,用刚才创建的超级用户登录,就能看到从PostgreSQL数据库映射过来的表,直接在Admin面板中进行增删改查操作。
注意事项
inspectdb可能对特殊字段类型(比如自定义枚举)识别不准确,需要手动调整模型字段类型。- 如果数据库表有外键关联,
inspectdb会自动生成ForeignKey字段,但要检查关联模型是否正确。 - 若表名不符合Django命名习惯,可在模型类中添加
verbose_name优化显示:class 模型名(models.Model): # ... 字段定义 class Meta: managed = False db_table = '实际数据库表名' verbose_name = '友好的单表名称' verbose_name_plural = '友好的多表名称'
内容的提问来源于stack exchange,提问作者Barun Bhattacharjee
相关产品推荐
相关产品推荐

