数据库的迁移
迁移是Django同步您对模型所做更改(添加字段,删除模型等)到您的数据库模型的方式
生成迁移文件——执行python manage.py makemigrations
将应用下的models.py文件生成一个中间文件,并保存在migrations文件夹中
执行迁移脚本程序 -执行python manage.py migrate
如果要想精确到某一个迁移文件则可以使用:
python manage.py migrate appname 文件名
创建模型类流程
任何关于表结构的修改,务必在对应模型上修改bookstore_book表添加一个名为InFo的字段varchar(100)
解决方案:
1.模型类中添加对应类属性
2.执行数据库迁移
模型类-字段类型
BooleanField
数据库类型:tinyint(1)
编程语言中使用True或False表示值
在数据库中:使用1或0来表示具体的值
CharField()
数据库类型:varchar
注意:必须要指定max_length参数值
DateField()
数据库类型(date)
模型类-Mate类
Mate类定义
使用内部Mate类来给模型赋予属性,Meta类下有很多内建的类属性,可对模型做一些控制
条件查询-方法
语法:MyModel.objects.get(条件)
作用:返回满足条件的唯一条数据
说明:该方法只能返回一条数据
查询结果多余一条数据则抛出
,Model .MultpleObjectsReturned异常
查询结果如果没有数据抛出Model.DoseExist异常
查询谓词
定义:做更领会的条件查询时需要使用查询谓词
说明:每一个查询谓词是一个独立的查询功能
_contains:包含指定值
实例:Author.objects.filter(name_contains=‘w’)
#等于select * from author where age > 50
_gte:大于等于
It:小于
Ite:小于等于
双下滑线
_in:查找数据是否在指定范围内
样例:Author.Objects.filter(country_in=[‘中国’,‘日本’,‘韩国’])
#等同于 select * from author where country in(‘中国’,‘日本’,‘韩国’)
_range:查询数据是否在指定的区间范围内
样例:
#查询年龄在某一区间内的所有作者
Author.objects.filter(age_range=(35,50))
#等同于 SELECT …WGERE Author BETWEEN 35 and 50;
查询单个数据
1.查询
——通过get(得到要修改的实体对象)
2.修改
——通过对象.属性的方式修改数据
3.保存
——通过对象.save()保存数据
删除数据
查找查询结果对应的一个数据对象
调用这个数据对象的delete()方法实现删除
try:
auth = Author.objects.get(id=1)
auth.delete()
except:
print(删除失败)
admin
admin管理后台
django提供了比较完善的后台管理数据库的接口,可供开发过程中调用和测试使用
django或搜索所有已注册的模型类,为这些模型类提供管理界面,供开发中使用
admin配置步骤
创建后台管理账号——该账号为管理后台最高权限账号
python manage.py createsuperuser
$ python manage.py createsuperuser
username (leave blank to use 'tarena'):tarena #此处输入用户名
Email address:laowei@tedu.cn
Password: #此处输入密码(密码要复杂写)
Password (again): #再次输入密码
Superuser created successfully.$
注册自定义模型
若要自己定义的模型类也能在/admin后台管理界中显示和管理,需要将自己的类注册到后台管理界面
注册步骤:
1.在应用app中的admin.py中导入注册要管理的模型models类,如:from .models import Book
2.调用admin.site.register方法进行注册,如:
admin.site.register(自定义模型类)
使用方法
1.在<应用app>/admin.py里定义模型管理类
calss xxxManager(admin.ModelAdmin):
......
2.绑定注册模型管理器和模型类
from django.contrib import admin
from .model import *
admin.site.register(YYYY,XXXXManager) #绑定YYYY模型类与管理器类 XXXXManager
另:mysql重改表名
mysql> alter table ts01 rename to ts01_new;
#修改表名的语法:alter table rename to/as new_tablename;
Query OK, 0 rows affected (0.00 sec)