Django - day01 Model的增删改查找

得益于Django的ORM模型,用面向对象的思想来操作数据库使得数据库的操作一切变得简洁了很多。

0. 建表

在应用下的models.py中建立一个表单如下:

class 表名(models.Model):
name = models.CharField(max_length=20,verbose_name='用户名')
email = models.EmailField(verbose_name='邮箱')
address = models.CharField(max_length=100,verbose_name='联系地址')
message = models.CharField(max_length=500,verbose_name='留言信息')

这里涉及到Django提供的类型,依次点击到模块models.fields中可以看到__all__变量,里面就存放着诸多Django支持的表项类型

接着输入以下命令在数据库中创建模型表单

python manage.py makemigrations 应用名称

python manage.py migrate

这里值得一提的是,在makemigrations后会生成一些文件,这些文件可以用来查看Django具体对数据库做了些什么操作。例如,在我修改address最大长度为120后,根据makemigrations的结果输入0002,得到的结果如下:

manage.py@django_start > sqlmigrate message 0002
"D:\usr\PyCharm 2017.3.3\bin\runnerw.exe" ...
BEGIN;
--
-- Change Meta options on user_message
--
--
-- Alter field address on user_message
--
ALTER TABLE `message_user_message` MODIFY `address` varchar(120) NOT NULL;
COMMIT; Following files were affected
Process finished with exit code 0

具体如何实现的可以不管,但是要知道,Django这里提供了一个方式供你查看它做了什么,以及给了你一个让你修改的可能。

1. 增加、修改数据

还是ORM模型,首先得实例化:

test = user_message()

接着就像操作对象一样,操作这个表里的项:

test.name = 'Thisisname'
test.address='Thisisaddress'
test.email = 'Thisisemail'
test.message='Thisismessage'

或者是使用像cpp中构造函数的方式创建表:

test=user_message(name='lilei',email='1@163.com',address='what',message='')

然后是保存:

test.save()

2. 删除、查找数据

一样的思路,这里直接对数据库模块进行操作:

test = user_message.objects.get(id=1)
test.delete()

诸如此类的操作:

Question.objects.all()
Question.objects.get(id=1) 等价 Question.objects.get(pk=1)
Question.objects.filter(id=1,other='')可以查找满足两个条件的项

若查找的数据不存在会抛出异常

最新文章

  1. .Net Collection的一些理解——记录一次向实习生的答疑
  2. 单例模式读取properties配置文件中的信息
  3. JS-字符串操作-替换
  4. 怎样Zbrush 4R7中添加和删除SubTool
  5. gl.TexSubImage2D 使用遇到图片翻转的问题
  6. java应用程序远程登录linux并执行其命令(ssh jar包)
  7. php面向对象3
  8. 18.Llinux-触摸屏驱动(详解)
  9. 雅虎军规以及Chrome调试
  10. Linux的pwd命令详解
  11. 解决import模块后提示无此模块的问题
  12. 中间件详解,Django复习
  13. logging模块初识
  14. Hdoj 1213.How Many Tables 题解
  15. AngularJS中的$http缓存以及处理多个$http请求
  16. vue2+webpack 开发环境配置
  17. Android学习笔记五:四大组件(转)
  18. Integer.valueOf方法的源码解读
  19. [Axiom 3D]1.初识Axiom
  20. List去重复(List中存的是对象)

热门文章

  1. 以EF形式操作mysql数据库
  2. Jmeter--thrift接口压测
  3. 智能指针 与 oc中的指针
  4. XCode: 如何添加自定义代码片段
  5. FreeRTOS 查询任务 剩余的栈空间的 方法
  6. Unity经验之谈-DoTween动画结束匿名委托之巨坑
  7. Python 学习笔记(九)Python元组和字典(二)
  8. Linux下抓取登陆用户密码神器mimipenguin
  9. getline的字符串读入
  10. Git命令行和Xcode结合使用(我来告诉你这行代码谁写的)