上一节是查询 而这一节是增删改
数据库都离不开这几样
这些方法都继承谁的呢 在models中继承的吗 Django.db吗?
过滤器可以查询多个,因此可以操作多个字段
#方法1
post = Post(title='博客11',created='2017-2-28') (实例化插入)
post.save()
#方法2
Post.objects.create(title='博客12',created='2018-11-11')
返回值是添加的对象
删除
#方法1
Movie.objects.get(mid='147').delete()
#BINARY不是函数,是类型转换运算符,比较时 区分大小写
DELETE FROM `movie` WHERE `movie`.`mname` LIKE BINARY 'h%'
* 方法2 (删除所有包含博客名字的帖子)
Post.objects.filter(title__contains='博客').delete()
修改
#方法1 (更新的是所有的字段)
post = Post.objects.first()
post.title='更新了'
post.save()
UPDATE `post_post` SET `title` = '更新了', `created` = '2017-11-27' WHERE `post_post`.`id` = 26
#方法2(只更新修改的字段),推荐使用
Post.objects.filter(id=26).update(title='又更新了')
UPDATE `post_post` SET `title` = '又更新了' WHERE `post_post`.`id` = 26
本节操作是连接自己的数据库 发现自己的环境也都还可以。然后就有去复习了一遍
如何登入后台站点的步骤和执行的代码
15.创建表单
django所有的数据模型都继承自models.Model
-
django所有的数据模型都继承自models.Model
-
CharField max_length (输入框)
-
TextField 没有长度限制的字符串 (文本域)
-
DateField 日期
-
DateTimeField 日期+时间
-
BooleanField 真假
-
NullBooleanField Null,真假,
-
Integer 整数
-
PositiveIntegerField 正整数
-
DecimalField max_digits(几位数) decimal_places(小数点后保留几位)
-
ImageField 图片 依赖于 Pillow(处理图片) upload_to='upload' 指定文件上传到目录
-
FileField(ImageField继承FileField)
-
AutoField
-
ForeignKey 1:n
-
ManyToManyField n:n
-
EmailField 邮箱
-
UUIDField 重复的概率非常低基本可以忽略,全世界都不一样的标示,uuid的产生和服务器的环境有关(CPU,网关,) 唯一性的标示,用户模块,订单号
-
不同的字段在后台对应不同的html的组件
ImageField 依赖于Pillow组件(python库)
常用属性
-
unique 标示这个字段唯一
-
default 默认的意思 ,(如果不写的话就使用默认的值)
-
null=True 允许字段为null,(允许数据库为null)数据库层面的
-
blank=True 表单阶段的,admin后台的
-
auto_now 针对时间的,自动调整当前,(当修改条目的时候,这个时间会自动更新),每次修改都会更新 (修改,保存的时候才会生效,)
-
auto_now_add 针对时间的,只添加一次,(创建的时间)
重点理解属性
-
表单层面的东西(js判断字段是否是" "),不需要重写迁移数据库
-
unique=True 可以任何字段
-
default 数据库+表单层面(同时生效)
-
auto_now_add 创建的时候会自动的添加时间(数据库),(后台表单层面找不到这个字段)
-
auto_now 每次修改的时候自动更新,(数据库+表单层面)
-
null=True 数据库层面,允许为Null,不是空字符串
-
blank=True 表单层面的,后台选填(表单项元素可以为空,表单不会进行非空校验)
uuid
uuid.uuid4().get_hex()
django迁移失败如何处理
-
删除模块下(问题模块)的所有的迁移记录
-
删除数据库中django_migrations中问题模块的迁移记录
DELETE FROM django_migrations WHERE app='模块名'
-
删除这个模块下已经产生的所有的表
-
重新生成迁移文件
-
重新迁移