字段的数据类型
外键设定
约束
1,在settings中设置数据库连接
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': '128.0.0.1', # 数据库主机
'PORT': 3306, # 数据库端口
'USER': 'root', # 数据库用户名
'PASSWORD': 'qwe123', # 数据库用户密码
'NAME': 'dj13' # 数据库名字
}
}
2,在项目文件的init中设置pymysql(那你肯定是要下载pymysql)
3,在子应用的models.py中设置你要的模型类
from django.db import models
# Create your models here.
#models.Model把类中的属性转换为数据库的字段
#模型类名对应表名 属性对应字段
class BookInfo(models.Model):
#属性名 = 属性类型(选项)
#字段名 模型类 数据类型 最大数 在后台显示别名
name=models.CharField(max_length=20,verbose_name='书名')
#日期 类型DateField
pub_date=models.DateField(verbose_name='发布日期')
#整形 ImageField 默认值 default
readcount=models.ImageField(verbose_name='阅读量',default=0)
commentcount=models.ImageField(verbose_name='评论量',default=0)
#逻辑删除BinaryField 布尔类型
is_delete=models.BinaryField(verbose_name='逻辑删除',default=False)
class Meta:
db_table='bookinfo' #指定创建的表明,不然就会默认上面的类名
verbose_name='图书' #在admin后台中显示名称
verbose_name_plural=verbose_name #使他在后台中显示中文
def __str__(self):
'''定义每个数据对象的显示信息'''
return self.name
#准备人物表
class PeopleInfo(models.Model):
GENDER_CHOICES=(
(0,'male'),
(1,'female')
)
name=models.CharField(max_length=20,verbose_name='名称')
#SmallIntegerField可以choice是个元祖做选择
gender=models.SmallIntegerField(choices=GENDER_CHOICES,default=0,verbose_name='性别')
description=models.CharField(max_length=200,null=True,verbose_name='人物描述')
#外键ForeignKey 第一个参数是表示和那个类连接 二个参数是约束这个表约束为删除主表外键的数据一起删
book=models.ForeignKey(BookInfo,on_delete=models.CASCADE)
class Meta:
db_table='peopleinfo' #指定创建的表明,不然就会默认上面的类名
verbose_name='人物信息' #在admin后台中显示名称
verbose_name_plural=verbose_name #使他在后台中显示中文
def __str__(self):
'''定义每个数据对象的显示信息'''
return self.name
4,设置完成后进行迁移命令(生成迁移文件修改字段类型才需要重新迁移是用来记录有木有对原来的做修改,还没创建成表)
python manage.py makemigrations
5,创建表
python manage.py migrate
6,shell工具进去环境测试 python manage.py shell
7,增加数据
第一种增加方法
(1)from app.models import BookInfo,PeopleInfo 先导入创建好的模型类
(2)book=BookInfo(name='python',pu_date='2023-6-7') 实例化后直接填属性名和要导入的数据(3)book.save() 保存一下okk
第二种
BookInfo.objects.create(name='hello',pub_date='2023-6-18')
8,修改数据---先确定数据是不是存在
第一种
book = BookInfo.objects.get(name = "python") 获取单个数据的值
book.name='java' 赋值方法的修改
book.save() 保存
第二种
update() where 条件查询 在模型类中 用filter()
filter 返回的是一个查询集
get 返回的是个字符串
BookInfo.objects.filter(name="hello").update(name="world")
9,删除数据
删除 delete()
1. 模型类对象.delete()
2. 模型类对象.objects.filter(查询属性).delete()