Django模型层之查询操作

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/luhu124541/article/details/88083436

一、Django shell删除数据库中的数据

b=Blog.objects.get(id=1)
b.delete() #删除数据库中id=1的Blog对象的数据

save():运行Update语句

2、添加关联对象到多对多数据
假设entry是一个包含多对多字段authors的对象实例。
为entry添加一个关联的Author对象:
entry.authors.add(author)
entry.authors.add(a1, a2, a3) #添加多个

3、一个QuerySet相当于一个SELECT语句,filter相当于WHERE或者LIMIT子句
4、Manager默认情况下被成为objects,模型类可以调用objects,但是实例不行

5、filter和exclude的区别
filter(**kwargs)
exclude(**kwargs)

6、过滤时候的一些知识:pub_date__year=2019:过滤出pub_date参数的年份等于2019的字段
pub_date__endswith pub_date__startswith

7、entry.objects.alll()[:] #可以使用索引,但是不支持负索引

8、通常情况,切片操作会返回一个新的QuerySet,并且不会被立刻执行。但是有一个例外,那就是指定步长的时候,查询操作会立刻在数据库内执行,

9、get()只能返回一个查询结果

10、对于外键和多对多关系,更需要进一步处理。例如,Entry有一个ManyToManyField到Author。 复制条目后,您必须为新条目设置多对多关系,像下面这样:

entry = Entry.objects.all()[0] # some previous entry
old_authors = entry.authors.all()
entry.pk = None
entry.save()
entry.authors.set(old_authors)

11、一个Entry对象e可以通过blog属性e.blog获取关联的Blog对象。反过来,Blog对象b可以通过entry_set属性b.entry_set.all()访问与它关联的所有Entry对象。

blog.entry_set.all()
blog.entry_set.set([entry])

12、多对多关系的两端都会自动获得访问另一端的API,而“反向”模型使用源模型的小写名称加上’_set’ (和一对多关系一样)。
(注:在一个模型中,如果存在多个外键或多对多的关系指向同一个外部模型,必须给他们分别加上不同的related_name,用于反向查询)

猜你喜欢

转载自blog.csdn.net/luhu124541/article/details/88083436
今日推荐