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

django_2

要求 修改数据库 Django shell 数据级联(一对多) 元信息 定义字段 模型过滤 创建对象4种方式 查询集 过滤器 获取单个对象 字段查询 时间 聚合函数 跨关系查询 F对象 Q对象...(查询) Django默认通过模型的objects对象实现模型数据查询。...过滤器:过滤器就是一个函数,基于所给的参数限制查询集结果,返回查询集的方法称为过滤器。 查询经过过滤器筛选后返回新的查询集,所以可以写成链式调用。.../缓存集 查询集的缓存:每个查询集都包含一个缓存,来最小化对数据库的访问 在新建的查询集中,缓存首次为空,第一次对查询集求值,会发生数据缓存,django会将查询出来的数据做 一个缓存,并返回查询结果...,可以实现对字段的约束 ·在字段对象时通过关键字参数指定 ·null ·如果为True,Django 将空值以NULL 存储到数据库中,默认值是 False ·blank

3.6K30

Django模型model

前言 根据前几篇文章的分享已经了解djangoWeb开发一般步骤为: 创建虚拟环境 安装django 创建项目 创建应用 在model.py中创建模型类 定义视图 配置url 创建模板 1....定义模型类 在模型中定义属性,会生成数据库表中的字段 django根据属性的类型确定以下信息: 当前选择的数据库支持字段的类型 渲染管理表单时使用的默认html控件 在管理站点最低限度的验证 django...模型类中字段选项 通过字段选项,可以实现对字段的约束 在字段对象时通过关键字参数指定 null:如果为True,Django 将空值以NULL 存储到数据库中,默认值是 False blank:如果为True...):tests = TestInfoManager() 当创建对象时,django不会对数据库进行读写操作 在管理器的方法中,可以通过self.model来得到它所属的模型类 调用save()方法才与数据库交互...创建查询集不会带来任何数据库的访问,直到调用数据时,才会访问数据库 何时对查询集求值:迭代,序列化,与if合用 返回查询集的方法,称为过滤器,管理器对象方法有all()、filter()、exclude

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

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

    注意 管理器通常只可以通过模型类来访问,不可以通过模型实例来访问。这是为了强制区分表级别和记录级别的操作。 对于一个模型来说,Manager是QuerySet的主要来源。...限制查询集范围 可以用 python 的数组切片语法来限制你的 QuerySet 以得到一部分结果。它等价于SQL中的 LIMIT 和 OFFSET 。...如果我们要对两个字段的值做比较,那该怎么做呢? Django 提供 F() 来做这样的比较。F() 的实例可以在查询中引用字段,来比较同一个 model 实例中两个不同字段的值。...参见 在 Django 的单元测试 OR查询实例(OR lookups examples) 中展示了 Q 的用例。 对象比较 要比较两个对象,就和 Python 一样,使用双等号运算符:==。...逆向关联 如果 model 有一个 ForeignKey外键字段,那么外联 model 的实例可以通过访问 Manager 来得到所有相关联的源 model 的实例。

    4.4K20

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

    网站:http://python.usyiyi.cn/django/index.html 管理器 class Manager 管理器是一个接口,数据库查询操作通过它提供给django的模型。...自定义管理器 在一个特定的模型中,你可以通过继承管理器类来构建一个自定义的管理器,以及实例化你的自定义管理器。...这个例子要注意的一点是: 管理器方法可以访问 self.model来得到它所用到的模型类。 修改管理器初始的查询集 管理器自带的 查询集返回系统中所有的对象。...调用自定义的查询集 虽然大多数标准查询集的方法可以从管理器中直接访问到,但是这是一个例子,访问了定义在自定义 查询集上的额外方法,如果你也在管理器上面实现了它们: class PersonQuerySet...下面就是 Django 如何处理自定义管理器和模型继承(model inheritance)的: 定义在非抽象基类中的管理器是 不会 被子类继承的。

    98120

    【Django】Django ORM 学习笔记

    Manager 在创建完 Model 对象之后,Django 会自动为其关联一个 Manager 对象,该对象是 Model 进行数据库操作的接口。...`id` = 1 迭代:在首次迭代查询集时会执行数据库查询 切片(限制查询集):对查询集执行切片操作时,指定 step 参数 序列化/缓存 repr:对查询集调用 repr 函数 len:对查询集调用...当首次对 QuerySet 的所有实例进行求值时,会将查询结果保存到 QuerySet 的缓冲中。当再访问该 QuerySet 时,会直接从缓冲中取数据。...关联查询就是在查询当前实例的同时,把其关联的实例数据也一块取出来。在下图中 orm_blog 通过一个外键和 orm_author 关联。...、ManyToManyField,例如下图中的 orm_author 就与多个 orm_blog 实例关联 因此 Django ORM 中的关联查询也分两中 select_related(单关联实例)

    2.2K20

    37.Django1.11.6文档

    如果你在模型中定义一个OneToOneField,该模型的实例将可以通过该模型的一个简单属性访问关联的模型。...在需要URL 的地方,对于不同层级,Django 提供不同的工具用于URL 反查: 在模板中:使用url 模板标签。 在Python代码中:使用reverse()函数。...在MIDDLEWARE中,每个中间件组件由一个字符串表示:完整的Python路径到中间件工厂的类或函数名称。...如何登录用户 如果你有一个认证了的用户,你想把它附带到当前的会话中 - 这可以通过login()函数完成。...例如,您可能希望通过整数字段搜索,或使用外部工具(如Solr或Haystack)。您必须确定通过搜索方法实现的查询集更改是否可能在结果中引入重复项,并在返回值的第二个元素中返回True。

    24.4K80

    django模型

    每个模型对 应数据库中唯一的一张表 如何编写模型 模型:每个模型都用一个类表示,该类继承自django.db.models.Model。...每个模型有多个 类的属性变量,而每一个类的属性变量又都代表了数据库表中的一个字段 字段:每个字段通过Field类的一个实例表示 —— 例如字符字段CharField和日期字段 DateTimeField...也可以使用一条语句创建并保存一个对象,使用create()方法 查询对象 通过模型中的管理器构造一个查询集,来从你的数据库中获取对象。 查询集(queryset)表示从数据库中取出来的对象的集合。...通过模型类来直接访问它, 管理器只可以通过模型的类访问,而不可以通过模型的实例访问,目的是为了强制区分“表 级别”的操作和“记录级别”的操作。 对于一个模型来说,管理器是查询集的主要来源。...当你确实需要结果时, 查询集 通过访问数据库来求值 获取一个单一的对象——get() filter() 始终给你一个查询集,即使只有一个对象满足查询条件 —— 这种情况下,查询集将 只包含一个元素。

    3.1K20

    Python后端基础面试题

    可以在查询中引用字段,用来比较两个字段,还可以对F()对象加减乘除 也可以通过F函数进行修改字段的操作 Q查询 与或非操作 4.django生命周期 wsgiref(web server)接收用户请求...-> 框架 8.实例方法,类方法,静态方法 实例方法 定义:第一个参数必须是实例对象,该参数名一般约定为“self”,通过它来传递实例的属性和方法(也可以传类的属性和方法); 调用:..., 三部分为 Model、Template 和 View Model (模型): 负责业务对象与数据库的对象(ORM) Template (模版): 负责如何把页面展示给用户...view 处理, view 再调用相应的 Model 和 Template 10.python如何进行内存管理的,内存泄漏的原因,怎么避免 内存管理: 1.引用计数:赋值计数器+1,删除-1...,返回结果集 结果集为NONE时用group就报错 findall匹配所有 18.用Python匹配HTML tag的时候,<.

    88130

    07.Django学习之model进阶

    查询集 是惰性执行的 —— 创建查询集不会带来任何数据库的访问。...当你确实需要结果时,查询集 通过访问数据库来求值。 关于求值发生的准确时间,参见何时计算查询集。   缓存机制 每个查询集都包含一个缓存来最小化对数据库的访问。...理解它是如何工作的将让你编写最高效的代码。叫做queryset缓存空间 在一个新创建的查询集中,缓存为空。...也可以通过使用双下划线“__”连接字段名来实现指定的递归查询。 没有指定的字段不会缓存,没有指定的深度不会缓存,如果要访问的话Django会再次进行SQL查询。...也可以通过depth参数指定递归的深度,Django会自动缓存指定深度内所有的字段。如果要访问指定深度外的字段,Django会再次进行SQL查询。

    2K30

    Django项目知识点(四)

    渲染到对于的html页面 在类中有三个重要的访问函数方法 get 就是当我访问当url是,就是执行get的方法 def get(self, request): return render(...QuerySet实例 就是从数据库根据自己要求拿数据的 连数据都那不出来,写啥视图 所以在编写queryset必须用django shell 调试 在model中,Django通过给Model增加一个objects...exclude() 排除满足条件的对象 annotate() 使用聚合函数 order_by() 对查询集进行排序 reverse() 反向排序 distinct() 对查询集去重...这样就可以引用模型字段值并使用它们执行数据库操作,而无需实际将它们从数据库中拉出到Python内存中 说白了就是我从数据库拿东西,但是有些需要的字段没有,要通过绑定的外键的app的model拿。...但是名称又是app__字段来命名,这样我要改名称,而且拿第一次的model,放在python内存中,再拿通过外键绑定的另一个model,又要执行第一次步骤,那个效率就不行了,干嘛我不一起拿,所以会用annotate

    1.6K30

    Django-model进阶(中介模型,查询优化,extra,整体插入)

    查询集 是惰性执行的 —— 创建查询集不会带来任何数据库的访问。...当你确实需要结果时,查询集 通过访问数据库来求值。 关于求值发生的准确时间,参见何时计算查询集。 缓存机制 每个查询集都包含一个缓存来最小化对数据库的访问。理解它是如何工作的将让你编写最高效的代码。...在一个新创建的查询集中,缓存为空。首次对查询集进行求值 —— 同时发生数据库查询 ——Django 将保存查询的结果到查询集的缓存中并返回明确请求的结果(例如,如果正在迭代查询集,则返回下一个结果)。...也可以通过使用双下划线“__”连接字段名来实现指定的递归查询。 没有指定的字段不会缓存,没有指定的深度不会缓存,如果要访问的话Django会再次进行SQL查询。...也可以通过depth参数指定递归的深度,Django会自动缓存指定深度内所有的字段。如果要访问指定深度外的字段,Django会再次进行SQL查询。

    1.6K70

    Django入门

    这篇文章是看了Django官方文档并进行练习之后总结的笔记,主要总结入门需要了解的几个知识点: 使用Django创建项目。 路径匹配,一个请求路径是如何映射到对应的回调函数。...不同Django版本可以使用的对应的Python版本 数据库安装(包含除MySQL外的其他数据库) 2.安装Django 先创建一个虚拟环境并切换到该虚拟环境中,这样保证将Django安装在该虚拟环境中...添加数据 当创建了数据模型之后,Django会自动给到一个数据库抽象的API,用于进行数据的增删改查。一个模型类表示一个数据库表,一个模型类实例代表一个数据库表中的记录。...(1) 可以通过实例化一个模型类,然后调用 save() 将数据保存到数据库中: >>> from todo.models import Todo >>> todo = Todo(content='第一件事就是写文...Todo.objects.filter(pk=2).delete() (1, {'todo.Todo': 1}) 复制代码 图-6 官网详情:字段类型、Model实例、QuerySet API、查询、

    1.5K00

    Django篇(二)

    更多模型字段,请参考Django官方文档。写的明明白白。 查询 我们在Django中通过操作模型类去做增删改查,sql语句那么多,我们同样可以进行增删改查。 其中最复杂的也就是查询了。...查询函数 我们在Django中通过:模型类.objects属性调用以下函数来进行查询 get: 返回表中满足条件的一条数据,有且只能有一条,查询出多条会报异常。 查询不到数据也会报异常。...首先我们需要导入Q模块: from django.db.models import Q Q实例: 在实例之前,在Filter中是可以进行and操作的,但是不能进行or操作。...查询学生表中,班级表中id为1的学生. # 学生表中有关联的字段,我们通过关联的字段来查询。...过滤查询集实例 如果我们在models.py中创建一个模型: # 创建stuinfo表 class stuinfo(model.Model): # name 字符串类型 最大长度为20

    1.4K20

    Python面试题100例【26~30题】

    二十六、请介绍下Django框架的生命周期Django是一个高级的Python Web框架,它遵循MVC设计模式(在Django中通常称为MTV,即模型(Model)、模板(Template)和视图(Views...以下是Django操作数据库的基本步骤:定义模型:在Django中,每个数据库表由一个Python类来表示,这个类继承自django.db.models.Model。每个类的属性就表示数据库表的字段。...二十九、Django开发中如何优化数据库优化查询:使用ORM时,要注意避免生成不必要的查询。...例如,如果你需要访问一个外键关联的对象的某个属性,最好使用select_related或prefetch_related方法,这样可以在一次查询中获取所有必要的信息,避免“N+1查询”问题。...一个中间件基本上就是一个Python类,它定义了以下一个或多个方法:init(self, get_response):在中间件实例化时调用一次,其中get_response是一个用于获取视图响应的回调函数

    24160

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

    模型实例参考 该文档详细描述模型 的API。它建立在模型 和执行查询 的资料之上, 所以在阅读这篇文档之前,你可能会想要先阅读并理解那两篇文档。...创建对象 要创建模型的一个新实例,只需要像其它Python 类一样实例化它: class Model(**kwargs) 关键字参数就是在你的模型中定义的字段的名字。...它只在数据库中删除这个对象;其Python 实例仍将存在并持有各个字段的数据。 更多细节,包括如何批量删除对象,请参见删除对象。 如果你想自定义删除的行为,你可以覆盖delete() 方法。...Django 在许多地方都使用unicode(obj)(或者相关的函数 str(obj))。最明显的是在Django 的Admin 站点显示一个对象和在模板中插入对象的值的时候。...如果实例的主键还没有值,将引发一个TypeError(否则,__hash__ 方法在实例保存的前后将返回不同的值,而改变一个实例的__hash__ 值在Python 中是禁止的)。

    1.9K10

    00x: Django models.Model详解

    通过所有的这些,Django提供了一个自动化生成访问数据库的API。...SQL的一些保留字如`join,where,select则是可以在model的字段名称中使用的,因为Django在每次SQL查询中避免了可能发生的冲突。...Manager只能通过model类进行访问,不能通过model实例进行访问。 Model方法 为model的对象操作定义一般的“row-level”功能。而Manager方法是对于整张表操作的方法。...model实例有很多方法的接口,你可以通过重写这些方法来实现自己想要的功能: str(): Python的”魔力函数“,该函数返回一个表示当前对象的字符串。...get_absolute_url(): 该函数告诉Django如何计算一个对象的url。Django 在admin接口中使用该函数,在需要的时候返回对象的url。

    1.7K20

    Django匆匆一眼却解答了多年疑惑

    Django 遵循 MVC 架构模式,所以接下来就看看如何使用 Django 完成 Web 开发。特别注意,本文的内容不具有实操性,看看即可。...数据迁移 使用 2 条命令,就可以把 model 迁移到数据库中: $ python manage.py makemigrations $ python manage.py migrate 执行完成后,...就会在数据库中按照 model 定义的表名、字段名、约束条件等,创建表结构。...设计 URLs 我们是通过 URL 发送请求的,服务端程序做处理,处理的函数叫做回调函数。Django 在 urls.py 文件中编写 URL 和回调函数的映射关系。...匹配到第一个后就会停止查找,调用回调函数。如果找完了都没有,就会调用 404 这个特殊 view,表示没找到。 编写 views 在 views 中编写回调函数。

    79210

    七日Python之路--第十二天(Django Web 开发指南)

    其他语言一般使用new来创建实例,Python使用的是‘初始化程序’initializer 而不是‘构造函数’constructor 即'__init__'函数 Python...对于多对多关系中。也可以通过 through = '***' 来指向一个显式的中间模型类。在这个类上可以添加额外的变量。...Person.DoesNotExist: raise Http404 或者使用 get_object_or_404 (15)利用 *args / **kwargs #在视图函数中...def myview(*args, **kwargs): #这样我们就可以使用,args[0]或kwargs['object_id'] 而不需要再记住 URLconf中的名称了 ##当然在 Django1.6...在模板中输出context变量时,会隐式的调用unicode方法。如果试图打印没有__unicode__方法的对象,在模板中是不可见的。

    1.8K20

    django 1.8 官方文档翻译: 2-1-1 模型语法(初稿)

    Django 会提供一套自动生成的用于数据库访问的API;详见执行查询。...这是因为 Django 会对每个 SQL 查询的数据库名称和列名称做重编码,至于如何编码视你所用的数据库而定。...Model 继承 这部分是在 Django 1.0 中新增的: 请注意版本文档 Django 中的 model 继承和 Python 中的类继承非常相似,只不过你要选择具体的实现方式:让父 model...每个子 model 都有专属的数据表,都可以查询和创建数据表。继承关系在子 model 和它的每个父类之间都添加一个链接 (通过一个自动创建的 OneToOneField 来实现)。...查询集只返回请求时所使用的 model (Querysets still return the model that was requested) 无论你何时查询 User 对象,Django 都不会返回

    3.1K30
    领券