![203f2d78913167e29cb417ee13bdc06b.png](https://i-blog.csdnimg.cn/blog_migrate/5816559b36759276d9fb86e52852bd82.jpeg)
1.创建、更新、取出、删除对象
Django自带了一个强大的数据库抽象API可以让你轻松的创建,检索,更新以及删除对象。Django的Object-relational Mapper(ORM)可以兼容MySQL,PostgreSQL,SQLite以及Oracle。请记住你可以在你项目下的setting.py中编辑DATABASES设置来指定数据库。Django可以同时与多个数据库进行工作,这样你可以编写数据库路由通过任何你喜欢的方式来操作数据。
创建对象
![431fbb64b3a5d3f51804b4637de4ec53.png](https://i-blog.csdnimg.cn/blog_migrate/b4338f31953c029af55a5ce4ecba5f5c.jpeg)
1.引入所需包
![04e0c774ec9da5976653fabc4fe5a435.png](https://i-blog.csdnimg.cn/blog_migrate/78c241e046687ad87d7b57cf23837f04.jpeg)
2.获取一个用户的对象
get方法允许你从数据库取回一个单独的对象。
![af9cef1b6a8d3ada93e0b90d9d2580dc.png](https://i-blog.csdnimg.cn/blog_migrate/6b126a290a093759d7f3eed9fd7fb7d2.jpeg)
3.设置一个Post实例(博客文档)
![05a2dbf670234bd388ee2509208a7d70.png](https://i-blog.csdnimg.cn/blog_migrate/04a8cd1588c953a4a5c5b3462f37e866.jpeg)
4.保存到数据库
![4f2a9246708f7bfc31dd776bd05d2529.png](https://i-blog.csdnimg.cn/blog_migrate/a0fe87341c9c36b2e7ff7af4fec27ce7.jpeg)
5.验证效果:
![dc1dafd2b2c3c1f5a76457daa82b9624.png](https://i-blog.csdnimg.cn/blog_migrate/7bc4161717f78aee3e1ee6c10fe16a5a.jpeg)
更新对象
![883d0e69f124614894875e472be15094.png](https://i-blog.csdnimg.cn/blog_migrate/7089b2605f1f82946e6b109763d53c85.jpeg)
获取对象
![bc08d923f3d6f5ef133dfeb5acf4bafb.png](https://i-blog.csdnimg.cn/blog_migrate/7de10ebfea32eddd4ac9ecb4df1d780c.jpeg)
![c0a2d3ea533f95bf42b3605ed0a405ec.png](https://i-blog.csdnimg.cn/blog_migrate/9c658f5124502c90e6811f71dbbdd99a.jpeg)
使用filter()方法,过滤查询集(QuerySet)
![c976456f58bfc2442c25c8ec69c5a72f.png](https://i-blog.csdnimg.cn/blog_migrate/dbe06752da6895e7d0ca6aaa899abc20.jpeg)
![329876aaf3c8594f4d8ab08a8f06a4b7.png](https://i-blog.csdnimg.cn/blog_migrate/ca87dadfd4a5f5d117f65a9a6778410c.jpeg)
使用exclude()方法,排除某些返回结果
![1a6e9deb2884cdbda5b593d7e77d2dab.png](https://i-blog.csdnimg.cn/blog_migrate/5fcb40c4f056de2dff70cb7f954020b7.jpeg)
使用order_by()方法,对不同的字段进行排序
![81948b8763d80c79258fb13b183b7cc1.png](https://i-blog.csdnimg.cn/blog_migrate/d6f256abf444dcdfbe4bbca623352333.jpeg)
删除对象
![17629174e36ecbd192b73d6eea2b16c9.png](https://i-blog.csdnimg.cn/blog_migrate/cecea10e9f9f1e5f05c23f575268df14.jpeg)
![b030707fd12a623a8068e33533c0dc36.png](https://i-blog.csdnimg.cn/blog_migrate/3d706e97778ee183b2a9fc34850a4992.jpeg)
2.创建模型管理器
objects是每一个模型(models)的默认管理器(manager),它会返回数据库中所有的对象。但是我们也可以为我们的模型(models)定义一些定制的管理器(manager)
编辑你的blog应用下的models.py文件添加如下代码来创建一个管理器(manager)
![e683140455c448acca805ab2d84efad8.png](https://i-blog.csdnimg.cn/blog_migrate/fec1734a23ce9eebfa16d13cb891afc2.jpeg)
get_queryset() 是返回执行过的查询集(QuerySet)的方法。我们通过使用它来包含我们定制的过滤到完整的查询集(QuerySet)中。我们定义我们定制的管理器(manager)然后添加它到Post 模型(model)中。
![58b0ff0cadfa23bd482efc435636acdf.png](https://i-blog.csdnimg.cn/blog_migrate/704530cab2461b3a3823f9bab464f0d5.jpeg)
新建一个状态为published的文章
![792642aa044b14fd0556444aa2160f32.png](https://i-blog.csdnimg.cn/blog_migrate/55351080c2ae6dc28cc5318342c2d004.jpeg)
使用定制管理器
返回所有标题开头为test 的并且是已经发布的帖子
![109c45c6263e8a292bc8690323b570c1.png](https://i-blog.csdnimg.cn/blog_migrate/3ad9b3daa01c7b769f7f4a4a52d50ca7.jpeg)
拓展:
![6aa7d2bc21294d7cdfb5e02d6a5bd9a4.png](https://i-blog.csdnimg.cn/blog_migrate/3d070a59d967e747bf3b272f750a53fd.jpeg)
报错整理:
![c9bc2abdf30b35b1bd3c4c9f78f6c268.png](https://i-blog.csdnimg.cn/blog_migrate/4538396410c8a88ca38705862fe5b0a8.jpeg)
问题原因是没有指定User对象。