模型操作语句--note

from books.models import Publisher

插入:

p1 = Publisher(name = ‘Apress‘, address = ‘2855 Telegraph Avenue‘, city = ‘Berkeley‘, state_province = ‘CA‘, country = ‘U.S.A‘, website = ‘http://www.apress.com/‘)

p1.save()

一步插入(create):

p1 = Publisher.objects.create(name = ‘Apress‘, address = ‘2855 Telegraph Avenue‘, city = ‘Berkeley‘, state_province = ‘CA‘, country = ‘U.S.A‘, website = ‘http://www.apress.com/‘)

查找:

publish_list = Publish.objects.all()

publish_list

__unicode__()方法返回多个列值则稍微复杂一些,它将first_namelast_name字段值以空格连接后再返回,如下:

def __unicode__(slef):

  return u‘%s %s‘%(self.first_name, self.last_name)

  //对__unicode__()的唯一要求就是它要返回一个unicode对象 如果`` __unicode__()`` 方法未返回一个Unicode对象,而返回比如说一个整型数字,那么Python将抛出一个`` TypeError`` 错误,并提示:”coercing to Unicode: need string or buffer, int found” 。

Publisher.objects.filter(name = ‘Apress‘)  //filter 相当于sql语句where

Publisher.objects.filter(country = ‘U.S.A‘, state_province = ‘CA‘)  //相当于sql语句 where ... and ...

Publisher.objects.filter(name__contains = ‘press‘)  //双下划线会将contains翻译成sql语句里的 like

  select id,name,address,city,state_province,conntry,website from books_publisher where name like ‘%press%‘;

其他的一些查找类型:icontains(大小写无关的like);startswith和endswith;还有range(SQL中between查询)

获取单个对象(即一个结果集QuerySet,如果查询结果是多个对象,会导致抛出异常;如果查询没有返回结果也会抛出异常)

Publisher.objects.get(name = ‘Apress‘)

这个 DoesNotExist 异常 是 Publisher 这个 model 类的一个属性,即 Publisher.DoesNotExist。在你的应用中,你可以捕获并处理这个异常,像这样:

try:      p = Publisher.objects.get(name=‘Apress‘)
except Publisher.DoesNotExist:
    print "Apress isn‘t in the database yet."
else:
    print "Apress is in the database."

Publisher.objects.order_by("name")

Publisher.objects.order_by("state_province", "address")

Publisher.objects.order_by("-name")  //逆向排序

Django让你可以指定模型的缺省排序方式:

class Publisher(models.Model):
    name = models.CharField(max_length=30)
    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()

    def __unicode__(self):
        return self.name

    class Meta:
        ordering = [‘name‘]  //你可以在任意一个 模型 类中使用 Meta 类,来设置一些与特定模型相关的选项。 在 附录B 中有 Meta 中所有可选项的完整参考,现在,我们关注 ordering 这个选项就够了。Publisher.objects.filter(countru = ‘U.S.A‘).order_by("-name")  //连锁查询Publisher.objects.order_by(‘name‘)[0]  //相当于sql: select id,name,address,city,state_province,country,website from book_publisher order by name limit 1;
Publisher.objects.order_by(‘name‘)[0,2]  //相当于sql: select id,name,address,city,state_province,country,website from book_publisher order by name offset 0 limit 2;
Publiser.objects.order_by("-name")[0]  //查找“最后一个”

更新:

p1.name = ‘Apress Publishing‘

p1.save()

p1.id  //假设结果为52

以上两句相当于:update books_publisher set name=‘Apress Publishing‘,address = ‘2855 Telegraph Avenue‘, city = ‘Berkeley‘, state_province = ‘CA‘, country = ‘U.S.A‘, website = ‘http://www.apress.com/‘ where p1.id=52

改进后:

Publisher.objects.filter(id = 52).update(name = ‘Apress Publishing‘)

相当于:update books_publisher set name=‘Apress Publishing‘ where id=52;

Publisher.objects.all().update(country=‘USA‘)  //把所有country值都变为USA

删除:

p = Publisher.objects.get(name = "Apress")

p.delete()

Publisher.objects.filter(name = ‘Apress‘).delete()

时间: 2024-10-23 10:20:45

模型操作语句--note的相关文章

xBIM 基本的模型操作

目录 XBIM 应用与学习 (一) XBIM 应用与学习 (二) 基本的模型操作 xBIM 日志操作 XBIM 3D 墙壁案例 格式之间转换 使用Linq 来优化查询 数据提取 插入复制功能 基于 WexBIM 文件在 WebGL 浏览和加载 本次案例我们主要查看xBIM 一些简单的基本操作,我们将介绍被称为CRUD(创建,检索,更新和删除)的持久性存储的四个基本功能 .以下示例通常适用于IFC4,但您也可以对IFC2x3执行相同的操作.实际上,大部分代码都是IFC版本不可知的,因为它使用IFC

MySql常用操作语句(1:启动、连接数据库及用户操作)

下方将个人常用的MySql操作语句(Win7下)总结如下: 1. 启动与关闭数据库 “管理员”权限, MySql安装目录下bin目录//:  1.1 启动 @>net start mysql  1.2 关闭 @>net stop mysql;  1.3 问题:服务名无效 这种情况是mysql服务没有安装,这时需要在同个目录下安装服务: @>mysqld -install 相应地,卸载命令是: @>mysqld -remove 2. 连接数据库 “管理员”权限, MySql安装目录下

MySQL数据库(3)_MySQL数据库表记录操作语句

附: MYSQL5.7版本sql_mode=only_full_group_by问题 1.查询当前sql_mode: select @@sql_mode 2.查询出来的值为: set @@sql_mode ='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'; 3.修改s

MySql常用操作语句(2:启动、连接数据库及用户操作)

下方将个人常用的MySql操作语句(Win7下)总结如下: 1.数据库(database)管理  1.1 create 创建数据库 mysql> create database firstDB;  1.2 show 查看所有数据库 mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | firstDB | | mysql | | perf

03-创建模型操作---用户添加

原文:03-创建模型操作---用户添加 注册页面 add.html 1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="

Microsoft SQL - 操作语句

操作语句(Operation Statement) 操作数据库 创建数据库 关键字:create database 用于创建各种数据库对象(数据库.表.触发器.存储过程等) 格式如:create <对象类型> <对象名称> create database 数据库名称 on primary ( name='主文件名' , size=初始化大小 按kb.mb.gb.tb设置 , maxsize=最大容量 unlimited(无限)/ 按kb.mb.gb.tb设置 , filegrowt

oracle数据库操作语句

常用到的oracle数据库操作语句,以下仅供参考: 一. 查询 1.查询某个数据库表大于某个日期的所有数据条数    select count(*) from ALARM_LOG t where t.ALARM_START_TIME> to_date('2017-01-10 08:00:00','yyyy-mm-dd hh24:mi:ss');   查询某个数据库表大于某个日期的所有历史数据  select * from ALARM_LOG t where t.ALARM_START_TIME>

Mysql 数据库 操作语句

Mysql 数据库 操作语句 mysql 格式语句规范如何登陆你的数据库?举例! 如果你的是 编译安装的花 那就得去编译安装后的那个目录中去,我的是安装到/usr/local/mysql 下 登陆数据库: cd /usr/local/mysql bin/mysql -u root -p 然后输入密码mysql-> show databases: 察看数据库记住每执行一句要带: 一.mysql常用语句创建,删除和最基本查询: 显示数据库    mysql->showdatabases; 创建数据

ORACLE基本定义、操作语句

ORACLE基本定义.操作语句 一.           表 1.创建表 CREATE TABLE TAB_NAME ( COL_01  VARCHAR2(10) NOT NULL, COL_02  NUMBER(8,2), COL_03  DATE ); 2.添加主键约束 ALTER TABLE TAB_NAME ADD CONSTRAINT PK_COL_01 PRIMARY KEY(COL_01); 3.添加唯一性约束 ALTER TABLE TAB_NAME ADD CONSTRAINT