首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

django 1.8 官方文档翻译: 2-3-1 模型实例参考

如果你需要从数据库重新加载模型的一个值,你可以使用 refresh_from_db() 方法。不带参数调用这个方法,将完成以下的动作: 模型的所有非延迟字段都更新成数据库中的当前值。...()(如果validate_unique True),并引发一个ValidationError,该异常的message_dict 属性包含三个步骤的所有错误。...当你调用save() Django 使用下面的算法: 如果对象的主键属性一个求值True 的值(例如,非None 值或非空字符串),Django 将执行UPDATE。...其它属性 DoesNotExist exception Model.DoesNotExist ORM 在好几个地方会引发这个异常,例如QuerySet.get() 根据给定的查询参数找不到对象。...Django 每个类提供一个DoesNotExist 异常属性是为了区别找不到的对象所属的类,并让你可以利用try/except捕获一个特定模型的类。

1.9K10
您找到你想要的搜索结果了吗?
是的
没有找到

Django模型model

定义模型属性 定义属性,需要字段类型 字段类型被定义在django.db.models.fields目录下,为了方便使用,被导入到django.db.models中 使用方式 导入from django.db...自动设置该字段当前时间,用于"最后一次修改"的时间戳,它总是使用当前日期,默认为false 参数DateField.auto_now_add:对象第一次被创建自动设置当前时间,用于创建的时间戳,它总是使用当前日期...模型类中字段选项 通过字段选项,可以实现对字段的约束 在字段对象通过关键字参数指定 null:如果True,Django 将空值以NULL 存储到数据库中,默认值是 False blank:如果True...模型的对象不存在时会引发异常,结合try/except使用 实例方法 str (self):重写object方法,此方法在将对象转换成字符串时会被调用 delete():将模型对象从数据表中删除 11..."模型类.DoesNotExist"异常 如果多条被返回,会引发"模型类.MultipleObjectsReturned"异常 count():返回当前查询的总条数 first():返回第一个对象 last

11910

Django 模型中自定义Manager和模型方法

Django将会把第一个Manager 定义默认Manager ,Django的许多部分(但是不包括admin应用)将会明确地模型使用这个manager。...Django将不时扩展内置模型方法的功能,并添加新的参数。如果您在方法定义中使用了*args, **kwargs,您将保证您的代码在添加将自动支持这些参数。...上面的示例中,clean()引发的ValidationError异常通过一个字符串实例化,所以它将被保存在一个特殊的错误字典中,键NON_FIELD_ERRORS.这个键用于整个模型出现的错误而不是一个特定字段穿线的错误...except ValidationError as e: non_field_errors = e.message_dict[NON_FIELD_ERRORS] 若要引发一个特定字段的异常,可以使用一个字典实例化...ValidationError,其中字典的键字段名.我们可以更新前面的例子,只引发pub_date字段上的异常: class Article(models.Model): ...

2.7K20

django自定义非主键自增字段类型详解(auto increment field)

1.django自定义字段类型,实现非主键字段的自增 # -*- encoding: utf-8 -*- from django.db.models.fields import Field, IntegerField..., # 要关联的表中的字段名称 on_delete=None, # 删除关联表中的数据,当前表与其关联的行的行为 - models.CASCADE,删除关联数据,与之关联也删除 - models.DO_NOTHING...,删除关联数据,引发错误IntegrityError - models.PROTECT,删除关联数据,引发错误ProtectedError - models.SET_NULL,删除关联数据,与之关联的值设置...# 要关联的表中的字段名称 on_delete=None, # 删除关联表中的数据,当前表与其关联的行的行为 ###### 对于一对一 ###### # 1...., # 自定义第三张表,使用字段用于指定关系表 through_fields=None, # 自定义第三张表,使用字段用于指定关系表中那些字段做多对多关系表 from django.db import

2.2K10

08.Django基础六之ORM中的锁和事务

如果其它事务持有冲突的锁,互斥锁, 那么查询将引发 DatabaseError 异常。你也可以使用select_for_update(skip_locked=True)忽略锁定的行。...这个功能使用起来非常简单,你只需要将它的配置项ATOMIC_REQUESTS设置True。     它是这样工作的:有请求过来时,Django会在调用视图方法前开启一个事务。...文档中说,推荐这么做。...尽量不要在atomic代码块中捕获异常 因为atomic块中的代码执行完的时候,Django会根据代码正常运行来执行相应的提交或者回滚操作。...这么做的好处是:异常发生,它能明确地告诉你那些操作需要回滚,而那些是不需要的。     为了保证原子性,atomic还禁止了一些API。

2.1K40

【云+社区年度正文】Django从入门到精通No.2----模型

注意, field.localize 的值 False ,默认的小组件是 TextInput 。...# 要关联的表中的字段名称 on_delete=None # 删除关联表中的数据,当前表与其关联的行的行为 - models.CASCADE...与之关联的值设置可执行对象的返回值,设置:models.SET(可执行对象) related_name=None # 反向操作,使用的字段名,用于代替表名_set related_query_name...# 默认创建第三张表,数据库中表的名称 3.一对一 一对一其实就是 一对多 + 唯一索引,两个类之间有继承关系,默认会创建一个一对一字段,一对一使用OneToOneField来实现,如下: from...# 要关联的表中的字段名称 on_delete=None # 删除关联表中的数据,当前表与其关联的行的行为 五、管理员登陆 为了能让大家提前看到django的数据操作,django

2.1K00

一个数据库事务 Bug 引发的惨剧

那么是什么引发了这个问题呢?所有付款仍标记为待处理为什么系统就把通知发出去了?我们仔细查看批量流程的实现,终于发现了问题。 嵌套事务 将付款标记为已到账的那个函数是在数据库事务内执行的。...断言原子块 在 Django 3.2 之前,我们有一些用例需要确保某个函数在一个数据库事务中执行或者执行。...我们最后实现了两个函数: # common/db.py from django.db import connection def assert_is_in_atomic_block() -> None:...如果你知道测试是怎么执行的,那么 on_commit 处理程序没有被触发这一事实也就不足奇了。为了加快速度,Django 会在每次测试开始启动一个数据库事务,然后立即回滚它。...许多代码段可能对同一事件感兴趣,它们特别好用。 如果你看看信号是如何在 Django 中实现的,你会发现幕后并没有太多魔法可言。

93120

django 1.8 官方文档翻译: 6-4-2 编写自定义的django-admin命令

can_import_settings选项设置False,该选项不可以也False,因为尝试设置区域设置需要访问settings。这种情况将产生一个CommandError。...直接继承BaseCommand不需要调用super()。 BaseCommand.get_version() 返回Django的版本,对于所有内建的Django命令应该都是正确的。...appNone,那么将检查安装的所有应用的错误。...如果这个异常是在执行一个来自命令行控制台的管理命令引发,它将被捕获并转换成一个友好的错误信息到合适的输出流(例如,标准错误输出);因此,引发这个异常(并带有一个合理的错误描述)是首选的方式来指示在执行一个命令某些东西出现错误...如果管理命令从代码中通过call_command调用,那么需要捕获这个异常由你决定。 译者:Django 文档协作翻译小组,原文:Adding custom commands。

68320

django-apschedule定时任务异常停止

具体的错误日志如下,通过分析,是update_job连接数据库异常,没有任何捕获机制,然后层层网上抛,最终导致线程停止,可以很肯定的是,绝对是因为数据库连接失败导致的定时任务失败,那为什么无法复现呢?...jobstore.update_job(job) 那为什么复现不了呢?...这个是因为,关闭数据库连接,程序不一定可以正好运行在update_job,可以看到前面的get_due_jobs进行了异常捕获,如果这里抛出数据库连接异常是可以捕获到的,然后跳过后面的操作,等待下一次定时任务的执行...复现 我们将断点打在jobstore.update_job(job)上,然后使用debug模式进行调试,程序运行到断点上,将数据库关闭,然后程序继续运行,则会报错,并抛出异常,线程停止了运行。...然后再次尝试复现该问题,可以发现在断开数据库后,它能够一直进行重试,线程没有停止,数据库恢复运行后,job执行成功,不再抛出异常

36160

Django中的AutoField字段使用

(上传文件的保存路径)/storage=None(存储组件,默认django.core.files.storage.FileSystemStorage)/width_field=None(上传图片的宽度保存的数据库字段名...三、字段参数 1、null:用于表示某个字段可以为空 2、unique:如果设置unique=True则该字段在此表中必须是唯一的 3、db_index:如果db_index=True则代表这为此字段设置索引...4、default:该字段设置默认值 四、关系字段 1、to:设置要关联的表 2、to_field:设置要关联的表的字段 3、related_name:反向操作,使用的字段名,用于代替原反向查询的...”表名_set” 4、on_delete:删除关联表中的数据,当前表与其关联的行的行为,例如删除一个出版社,那么和这个出版社有关联的书籍也都被删除掉了,下面介绍on_delete的参数值: on_delete...:删除关联数据,引发错误ProtectedError on_delete=models.SET_NULL:删除关联数据,与之关联的值设置null(前提FK字段需要设置可空) on_delete=models.SET_DEFAULT

6.4K20

Django Response对象3.4

会话将在这个指定的日期/时间过期,注意datetime和timedelta值只有在使用PickleSerializer才可序列化 max_age与expires二选一 如果指定过期时间,则两个星期后过期...JsonResponse 返回json数据,一般用于异步请求 _init _(data) 帮助用户创建JSON编码的响应 参数data是字典对象 JsonResponse的默认Content-Typeapplication...index(request): return render(request, 'booktest/index.html', {'h1': 'hello'}) 重定向 redirect(to) 传递进来的参数返回...DoesNotExist异常,而是引发Http404异常 klass:获取对象的模型类、Manager对象或QuerySet对象 **kwargs:查询的参数,格式应该可以被get()和filter()...接受 如果找到多个对象将引发MultipleObjectsReturned异常 from django.shortcuts import * def detail(request, id):

85420

Django—模型

参数auto_now_add表示对象第一次被创建自动设置当前时间,用于创建的时间戳,它总是使用当前日期,默认为false。...返回单个值的过滤器如下: get():返回单个满足条件的对象 如果未找到会引发"模型类.DoesNotExist"异常。...如果多条被返回,会引发"模型类.MultipleObjectsReturned"异常。 count():返回当前查询结果的总条数。 aggregate():聚合,返回一个字典。...如果获取一个对象,直接使用[0],等同于[0:1].get(),但是如果没有数据,[0]引发IndexError异常,[0:1].get()如果没有数据引发DoesNotExist异常。...没有为模型类定义管理器Django会为每一个模型类生成一个名为objects的管理器,自定义管理器后,Django不再生成默认管理器objects。

6.1K21
领券