在Python的Django框架中获取单个对象数据的简单方法

yipeiwu_com6年前Python基础

相对列表来说,有些时候我们更需要获取单个的对象, `` get()`` 方法就是在此时使用的:

>>> Publisher.objects.get(name="Apress")
<Publisher: Apress>

这样,就返回了单个对象,而不是列表(更准确的说,QuerySet)。 所以,如果结果是多个对象,会导致抛出异常:

>>> Publisher.objects.get(country="U.S.A.")
Traceback (most recent call last):
  ...
MultipleObjectsReturned: get() returned more than one Publisher --
  it returned 2! Lookup parameters were {'country': 'U.S.A.'}

如果查询没有返回结果也会抛出异常:

>>> Publisher.objects.get(name="Penguin")
Traceback (most recent call last):
  ...
DoesNotExist: Publisher matching query does not exist.

这个 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."

相关文章

如何通过python画loss曲线的方法

如何通过python画loss曲线的方法

1. 首先导入一些python画图的包,读取txt文件,假设我现在有两个模型训练结果的records.txt文件 import numpy as np import matplotl...

使用python实现递归版汉诺塔示例(汉诺塔递归算法)

利用python实现的汉诺塔。带有图形演示 复制代码 代码如下:from time import sleep def disp_sym(num, sym):  &nb...

实用自动化运维Python脚本分享

并行发送sh命令 pbsh.py #!/usr/bin/python # -*- coding: UTF-8 -*- import paramiko import sys impor...

pycharm+PyQt5+python最新开发环境配置(踩坑)

pycharm+PyQt5+python最新开发环境配置(踩坑)

安装工具: Pycharm 专业版2017.3 PyQT5 python3 测试工程文件及所需工具: 1、首先安装Pycharm,先前一篇介绍安装破解版的可以参...

深入理解Python变量与常量

深入理解Python变量与常量

变量是计算机内存中的一块区域,变量可以存储规定范围内的值,而且值可以改变。基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。常量是一块只读的内存区域,常量一旦被...