Django Admin的多种数据存储支持和数据库迁移
Django Admin提供了对多种数据库的支持,包括MySQL、PostgreSQL、SQLite等。在项目的settings.py文件中,可以配置数据库连接信息,例如:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'mydatabase', 'USER': 'mydatabaseuser', 'PASSWORD': 'mypassword', 'HOST': '127.0.0.1', 'PORT': '5432', } }
在指定数据库模型时,可以通过继承Django提供的Model类来定义,例如:
from django.db import models class User(models.Model): name = models.CharField(max_length=100) email = models.EmailField() phone = models.CharField(max_length=20) def __str__(self): return self.name
当对数据库的数据模型进行修改时,可以使用Django提供的数据库迁移工具,命令为:
python manage.py makemigrations python manage.py migrate
其中,makemigrations命令会生成一个迁移脚本文件,用于保存数据库模型的修改信息,而migrate命令则会执行这些数据库模型的修改操作。例如,对于以上定义的User模型,如果要添加一个age字段,可以修改代码为:
from django.db import models class User(models.Model): name = models.CharField(max_length=100) email = models.EmailField() phone = models.CharField(max_length=20) age = models.IntegerField() def __str__(self): return self.name
然后执行makemigrations和migrate命令即可更新数据库表结构:
python manage.py makemigrations python manage.py migrate
在Django Admin中,可以通过继承Django提供的admin.ModelAdmin类来注册管理数据模型,在admin.py文件中定义,例如:
from django.contrib import admin from .models import User class UserAdmin(admin.ModelAdmin): list_display = ('id', 'name', 'email', 'phone', 'age') admin.site.register(User, UserAdmin)
在Django Admin中,如果数据模型中存在外键关联,也可以使用ForeignKey和ManyToManyField字段在数据模型中定义,并在admin.py文件中使用Inline模型来管理数据模型,例如:
from django.contrib import admin from .models import Post, Comment, Tag class CommentInline(admin.TabularInline): model = Comment class PostAdmin(admin.ModelAdmin): inlines = [CommentInline] list_display = ('id', 'title', 'created_time', 'updated_time') class TagAdmin(admin.ModelAdmin): pass admin.site.register(Post, PostAdmin) admin.site.register(Tag, TagAdmin)
以上代码中,Comment模型使用ForeignKey字段与Post模型关联,Tag模型使用ManyToManyField字段与Post模型关联,而在PostAdmin中,使用CommentInline来管理Comment模型。
相关文章