Django学习笔记七----操作models,对数据库进行操作

上篇博客我们介绍了如何利用Django中的models创建数据库,

今天我们讲一下如何对创建的数据库进行‘增删改查’的操作。

我们是在django的shell模式下完成的,利用的ORM,(关系映射对象),不是数据库的sql语句,虽然底层肯定是sql 语句封装而成的。

下面直接讲讲步骤吧。

第一:进入Django的shell模式。

命令:python manage.py shell

第二:导入数据库表。格式是从:应用 中导入的。

例如:我的应用名称是:polls,表名:Question,Choice

from polls.models import Question,Choice

其中:Question 的字段如下:

字段就两个:question_id,pub_date

id这个字段是建表成功后,sqlite3自动分配的字段。

那么,对Question的操作如下:

增:(创建)

Question.objects.create(question_text='你的学习怎么样?‘,pub_date=timezone.now());   

Question.objects.create(question_text='今天中午吃什么?‘,pub_date=timezone.now());   

Question.objects.create(question_text='what is new?‘,pub_date=timezone.now());   

其中:timezone是在django shell 中导入的模块(

from django.utils import timezone

)以上三个orm语句就可以新增3条数据进去了。

查找:

Question.objects.filter(question_text='what is new?');

就可以查询出我们想要的那条数据了。

类似的还有:

Question.objects.filter(id=1);

Question.objects.filter(question_text__startswith='what') ;(类似于sql语句中的like用法,以what开头的那条数据,startswith前面是两条下划线,不是一条)

Question.objects.filter(question_text__endwith='什么’);以(什么)结尾的那条数据。

修改:

就是在查询的基础上直接修改,非常方便。

Question.objects.filter(id=1).update(question_text='你作业写完了嘛?')  --------------吧id=1的那条数据中的question_text改成:你作业写完了嘛?

删除:

Question.objects.filter(id=1).delete()

把id=1的那条数据删除。

关联的表的数据如何创建数据呢?

例如:我的Choice表是关联Question表的。

 其实也简单,具体我们看下Choice这个表,就知道如何操作了。

 看到了,自动把question_id带进来了。这个question_id就是对应的是Question表中的id,

那么,我们对Choice表进行增加数据的时候,就要注意,我们要添加的数据是对应Question表中的哪个id 的数据就可以了。

例如:我想回答id=2的Question表中的问题,

那么,我在Choice表中,就要指定question_id=2;

例子:Choice.objects.create(choice_text='红烧肉‘,votes=1,question_id=2);

Choice.objects.create(choice_text='麻辣烫‘,votes=1,question_id=2);

其中查询和更新,创建数据都有几种写法,大家只要掌握其中的一种写法就可以了。

路漫漫其修远兮。

原文地址:https://www.cnblogs.com/star12111/p/15126262.html