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

完整 Django 零基础教程|初学者指南 - 第 4 部分 转自:维托尔·弗雷塔斯

这里 Django 创建了一个新对象,因为Board 实例没有id 。...要更新一个值,我们可以这样做: board.description = 'Django discussion board.' board.save() 每个 Django 模型都有一个特殊属性;我们称之为模型管理器...基本上,它是来自数据库对象列表。我们可以看到我们有两个对象,但是我们只能读取Board object 。那是因为我们还没有 __str__Board 模型中定义方法。...models操作总结 下面是我们本节中学习方法和操作摘要,使用Board 模型作为参考。...大写Board 指的是类,小写board 指的是Board 模型一个实例(或对象): Operation 代码示例 创建对象而不保存 board = Board() 保存对象(创建或更新) board.save

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

Django-官网查询部分翻译(1.11版本文档)-QuerySet-字段查找-06

django(ORM)中,数据库与 python 对象映射关系十分形象,一个表模型类(class)即代表一张表,实例化出一个对象即代表一条数据记录 创建一个对象(一条数据记录) django...,直到你调用了 .save() 方法( .save() 没有返回值) 保存修改表对象 想要保存一个已经改动过对象,调用 .save() 方法即可(更新一条记录) 下面是一个 Blog 表模型实例化对象...,下面的语句是更新一个 Entry 模型实例化出来 entry 对象 blog 属性(请确保下面用到 Entry 和 Blog 实例化对象已经存在在数据库中,这样我们语句才能将它们查出来)...!其实它只执行了一次,只执行最后一行 print(q) 时候执行了数据库操作。...=False) 过滤字段 .none() 创建空 QuerySet 调用 .none() 方法会创建一个空 QuerySet ,里面包含任何数据对象,并且取值也不会执行任何数据库操作(是 EmptyQuerySet

2.9K20

django 1.8 官方文档翻译: 2-2-1 执行查询

python对象,django使用一种直观方式:一个模型类代表数据库一个表,一个模型实例代表数据库表中一条特定记录。...假设一个Blog实例b5已经被保存在数据库中,这个例子更改了它名字,并且在数据库中更新记录: >>> b5.name = 'New name' >>> b5.save() 上面的代码背后执行了...更新非关系字段,传入值应该是一个常量。更新 ForeignKey 字段,传入值应该是你想关联那个类某个实例。... QuerySet 进行更新,唯一限制就是一次只能更新一个数据表,就是当前 model 主表。所以不要尝试更新关联表和与此类似的操作,因为这是不可能运行。...调用 update 可以使用 F() 对象 来把某个字段更新为另一个字段值。

4.3K20

DjangoManager和QuerySet

models本身没有什么需要多说Django 使用了一套直观系统:一个模型类代表一张数据表,一个模型实例代表数据库表中一行记录。 模型save方法可以插入,更新,删除数据。...Django中,模型Manager提供了接口,它赋予了 Django 模型操作数据库能力。默认情况下,Django 为每个模型类添加了一个名为 objects Manager。...people = models.Manager() # 自定义名为people管理器 使用这个实例模型, Person.objects 会产生一个 AttributeError 异常,而 Person.people.all...有关如何自定义Manager,Django管理器中有详细说明。 QuerySet 一个 QuerySet 代表来自数据库中对象一个集合。它可以有 0 个,1 个或者多个 filters。...Django文档中,明确告诉了开发者,什么时候QuerySet被执行。因为这影响到SQL执行效率。

1.1K30

Django 学习笔记之模型(下)

题图:by thefolkpr0ject from Instagram 上篇文章讲解了 Django 如何创建模型,本文将继续讲解如何对模型进行增删改查操作。...1 前言 当我们建立好数据模型Django 会自动为我们生成一套数据库接口相关接口。这套接口称为 QuerySet API。为什么叫 QuerySet ?...因为从数据库中查询出来结果一般是一个集合,这个集合叫做 QuerySet。 为了方便理解,我继续使用上篇文章例子。另外方便我们在打印对象信息,能得到对象信息。所以我们需要对之前代码做下修改。...但是这里比较特殊,QuerySet 对象 id 是从 1 开始,所以 [:3] 表示 [1:3], 返回 id 为 1, 2, 3 对象。 另外,这种切片操作可以节约内存。...4 更新数据 更新数据操作,一般是查询数据后才执行。

65030

DjangoQuerySet详解

可以使用下列方法对QuerySet提交查询操作: 迭代:QuerySet是可迭代首次迭代查询集执行实际数据库查询。...如果传递任何值给values_list(),它将返回模型所有字段,以模型中定义顺序。 常见情况是获取某个模型实例特定字段值。...tzinfo参数定义截取之前将数据时间转换到时区。 11. none() 调用none()将创建一个返回任何对象查询集,并且访问结果不会执行任何查询。...Entry.objects.defer("body").only("headline", "body") 当对具有延迟字段实例调用save(),仅保存加载字段。...如果查找不到对象,get_or_create()将会实例化并保存一个新对象,返回一个由新对象以及True组成元组。

2.3K20

Django学习之旅(六)

每个模型都有一些类变量,模型中每个类变量都代表了数据库中一个字段。 每个字段通过 Field 类一个实例表示 —— 例如字符字段 CharField 和日期字段 DateTimeField 。...这种方法告诉 Django,每个字段中保存着什么类型数据。更多字段以及含义可以阅读 Django 官方文档。 4 创建表 打开终端,切换目录到 manage.py 所在目录。... Django 中,一个模型类对应一个数据库表。因此,一个模型实例就表示表中一条数据。为了输出数据一目了然,我们需要对上面的 model 进行优化。 ?...当我们 model.py 对这两个模型类修改完成之后,我们需要通知数据库:“我模型已经修改了,你数据库也要更新呀”。 只需要执行上步两行命令即可 ?...而一旦我们建立好数据模型Django 会自动为我们生成一套数据库抽象API。这样就大大方便我们创建、检索、更新和删除对象。 假如现在有个需求,我们需要查询数据库中所有的作者并打印出作者姓名。

1.4K30

37.Django1.11.6文档

而这,正是代理继承要做:为原始模型创建一个代理 。 你可以创建,删除,更新代理 model 实例,而且所有的数据都可以像使用原始 model 一样被保存。...模型实例包含数据情况下,模板中对它做处理很少有什么用处。 但是渲染一个未填充表单却非常有意义 —— 我们希望用户去填充它。 所以当我们视图中处理模型实例,我们一般从数据库中获取它。...当我们实例化表单,我们可以选择让它为空还是预先填充它,例如使用: 来自一个保存模型实例数据(例如用于编辑管理表单) 我们从其它地方获得数据 从前面一个HTML 表单提交过来数据 获取HTML...这个方法根据表单绑定数据创建并保存数据库对象。 ModelForm子类可以接受现有的模型实例作为关键字参数instance;如果提供此功能,则save()将更新实例。 ...使用commit=False 另外一个副作用是模型具有多对多关系时候。 如果模型具有多对多关系而且当你保存表单指定commit=False,Django 不会立即为多对多关系保存表单数据。

24.3K80

05.Django基础五之django模型层(一)单表操作

创建名为bookapp,book下models.py中创建模型: from django.db import models # Create your models here....django 会在相应 app migration文件夹下面生成 一个python脚本文件 执行 python manager.py migrte django才会生成数据库表,...model实例化对象,而是一个可迭代字典序列,只要是返回queryset类型,就可以继续链式调用queryset类型其他查找方法,其他方法也是一样。..., Django 删除对象,会模仿 SQL 约束 ON DELETE CASCADE 行为,换句话说,删除一个对象也会删除与它相关联外键对象。...查询价格100到200之间所有书籍名称及其价格 5 查询所有人民出版社出版书籍价格(从高到低排序,去重)   关于django连接mysql指定严格模式配置 DATABASES = {

2.9K10

Django源码学习-11-base.py

Django网络应用开发5项基础核心技术包括模型(Model)设计,URL 设计与配置,View(视图)编写,Template(模板)设计和Form(表单)使用。...base.py 保存视图抽象类,TemplateView和RedirectView,及工具类TemplateResponseMixin代码; create_update.py 基于函数通用视图;...表示没有数据显示空列表;否则将会产生一个404错误。 queryset 产生数据queryset实例或"类queryset"数据列表。 model 关联模型类。...paginated_by 分页每页数据项数。默认起用分页。 contextobjectname 保存到context中对象名称。默认是$(model)_list。...方法 get_queryset 获取用于数据显示列表对象。可以是类queryset对象。 queryset属性。未提供queryset属性,返回model默认管理器。

1.2K30

django 1.8 官方文档翻译: 2-5-6 多数据库

每当一个查询需要知道使用哪一个数据库,它将调用主路由,并提供一个模型和一个Hint (可选)。Django 然后依次测试每个路由直至找到一个数据库建议。...例如,若要保存一个对象到legacy_users 数据库,你应该使用: >>> my_object.save(using='legacy_users') 如果你指定using,save()方法将保存到路由分配默认数据库中...将对象从一个数据库移动到另一个数据库 如果你已经保存一个实例到一个数据库中,你可能很想使用save(using=...) 来迁移该实例到一个新数据库中。...当保存在statement 2中发生,p已经具有一个主键,Django 将尝试数据库上使用该主键。...然而,如果p 主键second数据库上已经使用second 数据库中已经存在对象将在p保存被覆盖。 你可以用两种方法避免这种情况。首先,你可以清除实例主键。

1.5K20

Django——model基础

更新多对多第三张表,可以直接用以下方法 book_obj.authors.set(*[装有对象id列表]) 此操作包含了两步clear+add 有时候字段获取较多,但是需要更新表里没有那么多字段...,此时需要删除一些字段,但是我们又需要用到这些字段,可以用pop,即达到了删除效果,也可以拿到对应删除对象,保存下来进行其他操作 关键点:book_obj.authors是什么?  ...如果我们要对两个字段值做比较,那该怎么做呢? Django 提供 F() 来做这样比较。F() 实例可以查询中引用字段,来比较同一个 model 实例中两个不同字段值。 ?...“插入和更新数据”小节中,我们有提到模型save()方法,这个方法会更新一行里所有列。 而某些情况下,我们只需要更新行里某几列。... Django 删除对象,会模仿 SQL 约束 ON DELETE CASCADE 行为,换句话说,删除一个对象也会删除与它相关联外键对象。例如: ?

1.1K100

Django Admin后台管理:高效开发与实践

查看模型列表:登录后,可以看到注册所有模型列表。 创建新记录:点击模型名称,进入编辑页面,填写字段后点击保存创建新记录。...认证后端:Django允许定义多个认证后端,用于验证用户凭据。 权限和授权:Django权限系统基于对象,允许为每个对象实例设置权限。...组管理:组是用户集合,可以为组分配权限,从而简化权限管理。 权限管理:权限分为两种,即对象权限和模型权限。模型权限适用于整个模型,而对象权限适用于模型特定实例。...3.4 高级权限控制 对象权限:Django允许为模型每个实例设置权限,这可以通过编写自定义权限类来实现。...链式调用:QuerySet支持链式调用,可以一个语句中执行多个查询操作。 惰性执行:QuerySet是惰性执行,这意味着它们真正需要数据才会执行查询。

8510

DjangoDjango ORM 学习笔记

同时 ORM 避免了规范、冗余、风格统一 SQL 语句,可以避免很多人为 bug,方便编码风格统一和后期维护。...将数据库表和对象模型关联,我们只需针对相关对象模型进行编码,无须考虑对象模型和数据库表之间转化,大大提高了程序开发效率。 方便数据库迁移。...当需要迁移到新数据库,不需要修改对象模型,只需要修改数据库配置。...对象和关系之间并不是完美映射 一般来说 ORM 足以满足我们需求,如果对性能要求特别高或者查询十分复杂,可以考虑使用原生 SQL 和 ORM 共用方式 Django ORM Django 框架中集成了...当首次对 QuerySet 所有实例进行求值,会将查询结果保存QuerySet 缓冲中。当再访问该 QuerySet ,会直接从缓冲中取数据。

2.2K20

django 1.8 官方文档翻译: 2-5-1 管理器 (初稿)

自定义管理器 一个特定模型中,你可以通过继承管理器类来构建一个自定义管理器,以及实例化你自定义管理器。...添加额外管理器方法 为你模型添加表级(table-level)功能,采用添加额外管理器方法是更好处理方式。如果要添加行级功能--就是说该功能只对某个模型实例对象起作用。...使用管理器访问关联对象 默认情况下,访问相关对象(例如choice.poll),Django 并不使用相关对象默认管理器,而是使用一个”朴素”管理器类实例来访问。...整个这一节中,我们将那种由 Django 为你创建管理器称之为 “自动管理器”,既有因为没有管理器而被 Django 自动添加默认管理器, 也包括访问关联模型使用临时管理器。...你也不应该在模型中使用这个属性之后,类上改变它。这是因为模型类被创建,这个属性值马上就会被处理,而且随后不会再读取这个属性值。

96120

Django内置通用类视图CBV及示例

属性: model: 视图要显示模型 queryset: 表示对象一个查询集.queryset值优先于model值. template_name: 字符串表示模板名称. context_object_name...(self.object) context_object_name:self.object也将存储get_context_object_name()返回名称中,该名称默认为模型小写名称. 3....显示用于编辑现有对象表单视图,重新显示具有验证错误信息视图,并且保存对象.这里使用从对象模型自动生成表单(除非手动制定表单类)....实例 1、创建django工程,创建名为crudapp,此处略过 2、 修改models.py class employee(models.Model): id = models.IntegerField...context_object_name = 'employee_detail' #指定获取模型列表数据保存变量名。这个变量会被传递给模板。

3.2K10

Django学习之八:forms组件【对

form 实例,可以是空,也可以提前填充数据。归纳总结form实例化数据主要来自三个方面: 来自model instance 来自其它数据源 来自用户提交表单数据。...所以,实例化modelform,instance参数除了会影响save()行为,还会影响初始化参数initail效果。...比如说form.save()可以保存或者更新form数据到数据库中。这里研究研究。...对于绑定了对象方式,如果提供了数据且提供了instance实例,这是update这个实例对象。对于普通模式ORM操作出现了主键等冲突,就会save()操作报错。...通过modelformsave操作对应model对象,关更新操作实例化modelform必须带上instance参数指明是更新哪个model 对象数据,不然会编程新增,失去了想要修改操作意图

2.1K30
领券