2019.03.21 增删改

上一节是查询  而这一节是增删改

数据库都离不开这几样

这些方法都继承谁的呢  在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='模块名'

  • 删除这个模块下已经产生的所有的表

  • 重新生成迁移文件

  • 重新迁移

posted @ 2019-03-21 09:41  AJking  阅读(96)  评论(0编辑  收藏  举报