ORM--对象关系映射
创建表
from django.db import models<br> class Publisher(models.Model): name = models.CharField(max_length=30, verbose_name="名称") address = models.CharField("地址", max_length=50) city = models.CharField(‘城市‘,max_length=60) state_province = models.CharField(max_length=30) country = models.CharField(max_length=50) website = models.URLField() class Meta: verbose_name = ‘出版商‘ verbose_name_plural = verbose_name def __str__(self): return self.name class Author(models.Model): name = models.CharField(max_length=30) def __str__(self): return self.name class AuthorDetail(models.Model): sex = models.BooleanField(max_length=1, choices=((0, ‘男‘),(1, ‘女‘),)) email = models.EmailField() address = models.CharField(max_length=50) birthday = models.DateField() author = models.OneToOneField(Author) class Book(models.Model): title = models.CharField(max_length=100) authors = models.ManyToManyField(Author) publisher = models.ForeignKey(Publisher) publication_date = models.DateField() price=models.DecimalField(max_digits=5,decimal_places=2,default=10) def __str__(self): return self.title 复制代码
单表
关联表:一对一
一对多(ForeignKey)
多对多(ManyToMany)
操作表(行对象操作):
增---create
方式一
models.book.objects.create(title="python",price=12)
方式二
dic={"title":"go","price":45}
models.bol.objects.create(**dic)
如果有外键:
一对多:
(1)models.Book.objects.create(title="python",price=12,publish=2)
(2) models.Book.objects.create(title="python",price=12,publish=obj) ---推荐
save
方式一
obj=Book(title="python",price=12)
obj.save()
方式二
obj=Book()
obj.title="go"
obj.price=45
obj.save()
删除----delete
models.book.objects.filter(id=7).delete()
改----update
models.book.objects.filter(id=12).update(title="c++",page_num=320)
查----filter 返回一个valuequeryset序列
----all 查所有数据
----get()查的是一个对象,否则返回错误
对查询的结果再进行处理
1 values(*kwarge) 返回一个valuequeryset——运行后得到一个可迭代的字典序列 2 order_by() 对查询结果进行排序 object1=models.book.objects.order_by("-price") 3 reverse() 对查询结果反向排序 4 distinct() 从返回的结果中剔除重复记录 5 value_list() 返回的一个是元祖序列 6 count() 返回数据库中匹配查询的对象数量 7 first() 返回第一条数据 8 last() 返回最后一条记录 9 exists() 如果queryset包含数据,就返回true,否者返回false
单表查询
1 models.book.objects.filter(id_gt=1,id_it=10) #获取ID大于1,小于10的值 2 3 models.book.objects.filter(id_in=[1,3,6]) #获取id=1,3,6的值 4 models.book.objects.exclude(id_in=[1,3,6]) #not in 5 6 models.book.objects.filter(title_icontains="p") #title包含p的值 7 models.book.objects.filter(title_statwith="p") #title以p开头的值
原文地址:https://www.cnblogs.com/yehost/p/10258201.html