数据操作

发布于 2020-01-13 19:21:40   阅读量 148  点赞 0  

 使用ORM模型时候,所有的数据库中的操作都隐身为模型的操作。

一、增

 添加数据到数据库中,首先需要创建一个模型,再在该模型上调用.save()方法,Django会自动生成对应sql语句,然后存储对应数据在数据库中。  

二、查

 数据的查找都是通过模型的objects对象来实现的。

1.查找所有

 要查找模型对应的表下的所有数据,只需调用模型的类方法.objects.all()*示例代码:*

articles = Article.objects.all()

2.数据过滤

 即筛选符合特定条件的数据,此时需调用objectsfilter方法。 *示例代码:*

articles = Article.objects.filter(title="abc")
⇨ [<Article:abc>]

# 多个条件
articles = Article.objects.filter(name="abc",content="bcd")

 调用filter(),会将所有满足条件的模型对象都返回,即返回的是一个对象集。

3.获取单个对象

 有时若只需返回第一个满足条件的对象,则可以使用get方法。该方法只能返回一条数据,给的条件有多条数据,则会抛出MultipleObjectsReturned错误;若给的条件没有任何数据则会抛出DoesNotExit,即这个方法需要获取的数据有且仅有一条。 *示例代码:*

article = Artcile.objects.get(title="abc")
⇨ <Article:abc>

 此时,若没有找到满足条件的对象,则会抛出一个异常。而filter在没有找到满足条件的数据时,返回一个空列表。

4.数据排序

 若模型未在Meta类中配置ordering指定顺序,则返回的数据都是无序的。若想返回的数据是有序的,则可以使用order_by方法来实现。 *示例代码:*

articles = Article.objects.order_by("publish_time")

 以上代码会返回所有依据publish_time由小到大排序的Article对象列表。而若要想进行倒序排序,则可以在publish_time前加一个符号。 *示例代码:*

articles = Article.objects.order_by("-publish_time")

需注意的是,对于多个order_by的链式调用,会将前面调用的顺序打乱,使用后面调用的规则进行排序。

三、修改数据

 只需将查找到的对象的属性进行更改,再调用对象的.save()方法,即可进行修改。

四、删除数据

 调用对象的delete()方法即可删除数据。

五、更新数据

 在QuerySet对象上调用update()方法可以批量更新数据。

Book.objects.filter(name='西游记').update(price=100)


Last Modified : 2020-03-09 19:21:40