ORM与DB-django使用ORM方式建立操作数据表
###1、model模型第一步:设计模型
❖ 完成博客,我们需要存储三种数据。文章分类、文章、文章标签。
❖ 1、分类表结构设计:
❖ 表名:Category、分类名:name (科技,教学,游戏,动漫)
❖ 2、标签表设计:
❖ 表名:Tags、标签名:name (俄乌局势,360报告)
❖ 3、文章表结构设计:
❖ 表名:Article、标题:title、摘要:intro、分类:category、标签:tags、内容:body、创建时间:created_time、作者:author
❖ 其中:
❖ 分类和文章是一对多的关系,标签和文章是多对多的关系,作者和文章是一对多的关系。
###2、模型第二步
###1.创建模型( blog/models.py )
❖ from django.db import models
❖ class Category(models.Model):
❖ name = models.CharField(verbose_name='分类', max_length=100)
❖ class Tags(models.Model):
❖ name = models.CharField('标签', max_length=100)
❖ class Article(models.Model):
❖ title = models.CharField('文章标题',max_length=70)
❖ intro = models.TextField('文章内容', max_length=200, blank=True)
❖ created_time = models.DateTimeField(‘发布时间',auto_now_add=True)
###2.创建模型--关联
❖ category =
models.ForeignKey(Category,on_delete=models.CASCADE,verbose_name='分类',default='1')
❖ tags = models.ManyToManyField(Tags,blank=True)
❖ user = models.ForeignKey(User,on_delete=models.CASCADE,verbose_name='作者')
元数据改中文匹配
❖ class Category(models.Model):
❖ name = models.CharField('分类',max_length=100)
❖ #下面为新增代码,
❖ class Meta:
❖ verbose_name = '分类'
❖ verbose_name_plural = verbose_name
❖ def __str__(self):
❖ return self.name
❖ 我们给每个类都增加了一个内部类Meta和__str__方法属性,刷新。
增加字段
❖keywords=models.CharField('文章关词',max_length = 120,blank = True,null = True)
❖views=models.PositiveIntegerField('阅读量',default = 0)
❖top=models.IntegerField(choices=[(0,'否'),(1,'是'),], default = 0,verbose_name = '是否推荐')
❖modified_time=models.DateTimeField('修改时间',auto_now = True)
###模型第三步:迁移数据
❖ 数据模型设计好之后,我们就需要迁移数据到数据库。
❖ 创建模型文件:只是创建了一个对象的数据文件,为改动创建迁移记录;python manage.py makemigrations
❖ 迁移数据:把表结构在数据库中建立,将操作同步到数据库
❖ python manage.py migrate
###第四步:可以使用Django管理后台admin查看建立的应用
❖ 1、创建管理员帐号密码
❖ 创建一个管理员帐号
❖ python manage.py createsuperuser
❖ ……
❖ 2、启动开发服务器
❖ 输入如下命令:
❖ python manage.py runserver
在浏览器中访问http://127.0.0.1:8000/admin/
3、在admin下注册blog应用
打开blog/admin.py文件,加入如下内容:
❖from django.contrib import admin
❖from .models import Article,Tags,Category
❖admin.site.register(Tags)
❖admin.site.register(Article)
❖admin.site.register(Category)
刷新页面,我们就能看到blog这个应用了。
增加管理平台
class ArticleAdmin(admin.ModelAdmin):
# 界面显示的列 list_display=('id', 'category', 'title', 'user','views','created_time')
list_per_page设置每页显示多少条记录,默认是100条 list_per_page = 50
#ordering设置默认排序字段,负号表示降序排序 ordering = ('-created_time',)
#fk_fields 设置显示外键字段 fk_fields = ['category']
# 设置id字段可以点击进入编辑界面 list_display_links = ['id']
# 指定标题title做为搜索字段 search_fields = ['title'] list_filter = ['user']
# 右侧栏过滤器,按作者进行筛选 date_hierarchy = 'created_time'
# 详细时间分层筛 admin.site.site_header = '内容管理后台'
admin.site.site_title = '测试知识内容平台'