ORM (Object Relation Mapping),对象关系映射。

模型ORM语法

  1. 定义 User 模型 ```python from django.db import models

class User(models.Model): name = models.CharField(‘用户名’, max_length=30) age = models.TinyIntField(‘年龄’, default=0)

  1. 2. CRUD 对应的ORM语法
  2. ```python
  3. # 新增
  4. # 第一种,手动保存
  5. user = User(name='Blucas', age=26)
  6. user.save()
  7. # 第二种,自动保存
  8. User.objects.create({
  9. 'name': 'Blucas',
  10. 'age': 26
  11. })
  12. # 第三种,批量新增
  13. User.objects.bulk_create([
  14. User(name='张三', age=20),
  15. User(name='李四', age=21),
  16. User(name='王五', age=22)
  17. ])
  18. # 删除:先查再删
  19. # 第一种,单条删除
  20. user = User.objects.get(pk=1)
  21. user.delete()
  22. # 第二种,批量删除
  23. user = User.objects.all()
  24. user.delete()
  25. # 修改:先查再改,最后保存
  26. user = User.objects.get(pk=1)
  27. user.name = '张老三'
  28. user.save()
  29. # 查询
  30. # 第一种,返回一个查询集
  31. user = User.objects.all() # <QuerySet>
  32. # 第二种,返回一个模型对象
  33. user = User.objects.get(pk=1) # <User>

细说查询语法

查询语法是在实际开发当中使用频率最高的操作; 查询语法可能返回的值区分 【查询集】 和 【模型对象】; 查询集可以继续使用查询语法,返回查询集的函数成为 过滤器 函数,所以查询集可以链式调用过滤器函数;

过滤器函数

  1. User.objects.all()
  2. User.objects.filter()
  3. User.objects.order_by()

非过滤器函数

  1. User.objects.get()
  2. User.objects.first()
  3. User.objects.last()
  4. User.objects.exists()
  5. User.objects.count()

查询集限制

  1. User.objects.all()[:2] # 前闭后开,相当于返回0, 1
  2. User.objects.all()[0:10]
  3. User.objects.all()[::2]