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

Django - 模型层以及如何通过模型层来建表

这里模型的思想与Java中的ORM(Object Relationship Mapping) 对象关系映射类似 模型准确且唯一的描述了数据 它包含要储存的数据的字段 一般来说,每一个模型都映射一张数据库表...如何创建模型?...每个模型都是一个 Python 的类,这些类继承 django.db.models.Model 模型类的每个属性都相当于一个数据库的字段 利用这些,Django 提供了一个自动生成访问数据库的 API...,可以通过这些API对数据库进行增删改查 Settings.py 文件中增加一些配置 INSTALLED_APPS:定义了你的模型后,需要将模型添加到Django,所以需要将包含models的模块名称添加进去...DATABASES:数据库连接信息 定义一个Person模型 first_name 和 last_name 是模型字段 每个字段都被指定为一个类属性,并且每个属性映射为一个数据库列。

82720

Django之ForeignKey和ManyToManyField多表查询

多表查询是模型层的重要功能之一, Django提供了一套基于关联字段独特的解决方案....ForeignKey.related_query_name以ForeignKey.related_name作为默认值 使用ForeignKey查询 前向查询 若关系模型A包含与模型B关联的关联字段, 模型...A的实例可以通过关联字段访问与其关联的模型B的实例: >>> e = Entry.objects.get(id=2) >>> e.blog # Returns the related Blog object...提供了一种使用双下划线__的查询语法: >>> Entry.objects.filter(blog__name='Beatles Blog') 反向查询 被索引的关系模型可以访问所有参照它的模型的实例,...flight.reserve.remove(user) flight.save() 参考资料: django文档-模型字段-关联字段 django文档 - 执行查询 - 关联的对象 django文档 -

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

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

我们将通过实现反向关系来实现这一点,其中 Django 将自动在数据库中执行查询以返回属于特定主题的所有帖子 的列表。 好的,现在足够的 UML!...在模型之间创建关系的一种方法是使用 ForeignKey字段。它将在模型之间创建链接并在数据库级别创建适当的关系。该 ForeignKey字段需要一个位置参数,其中包含对其将相关的模型的引用。...该 related_name参数将用于创建 反向关系 ,其中 Board实例将有权访问 Topic属于它的实例列表。 Django 会自动创建这种反向关系——这 related_name是可选的。...在 Post模型中,该 updated_by字段设置 related_name='+'. 这告诉 Django 我们不需要这种反向关系,所以它会忽略它。...您可以在下面看到类图和使用 Django 生成模型的源代码之间的比较。绿线代表我们如何处理反向关系。 ? 类图模型定义 此时,您可能会问自己:“主键/ID 怎么样”?

2.2K40

Django ORM

目录 Django ORM ORM实操之数据库迁移 ORM实操之字段的修改 ORM实操之数据的增删改查 数据库同步 ORM创建表关系 Django请求生命周期流程图 路由匹配 无名分组 有名分组 反向解析...无名分组和有名分组反向解析 Django ORM ORM:对象映射关系程序 通过orm将编程语言的对象模型和数据库的关系模型建立映射关系,这样我们在使用编程语言对数据库进行操作的时候可以直接使用编程语言的对象模型进行操作就可以了...,反向输出sql语句对应的类 ps:如果inspectdb后不跟表名,那么就会将该数据库内的所有表反向解析成类(python语句) # 数据库里面已经有一些表,我们如何通过django orm操作?...1.照着数据库表字段自己在models.py 2.django提供的反向同步 操作: 1.先执行数据库迁移命令 完成链接 python manage.py makemigrations 2.查看代码...表与表之间的关系有一下三种: 一对多、多对多、一对一,没关系暂且排外,下面演示如何通过ORM来创建外键确立表关系~ ORM创建外键字段的位置: 一对多:创建在多的一方 一堆一:创建在任何一方都可以

4K10

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

另见 ForeignKey 字段还接受许多别的参数,在模型字段参考有详细介绍。这些选项帮助定义关联关系应该如何工作;它们都是可选的参数。...访问反向关联对象的细节,请见Following relationships backward example。 示例代码,请见多对一关系模型示例)。...另见 完整的示例参见多对多关系模型示例。 ManyToManyField 字段还接受别的参数,在模型字段参考中有详细介绍。这些选项帮助定义关系应该如何工作;它们都是可选的。...对于通过中介模型与自己进行多对多关联的模型,允许存在到同一个模型的两个外键,但它们将被作为多对多关联关系的两个(不同的)方面。...这取决于你如何使用  '%(class)s' 和'%(app_label)s来构造你的反向名称。如果你没有这样做,Django 就会在验证 model (或运行 migrate) 时抛出错误。

4.9K20

【Python全栈100天学习笔记】Day41 Django深入理解框架

在实际的项目中,数据模型通常通过数据库实现持久化操作,而关系型数据库在过去和当下都是持久化的首选方案,下面我们以MySQL为例来说明如何使用关系型数据库来实现持久化操作。...OK 执行完数据模型迁移操作之后,可以在通过图形化的MySQL客户端工具查看到E-R图(实体关系图)。 利用Django后台管理模型 Django框架有自带的后台管理系统来实现对模型的管理。...使用ORM完成模型的CRUD操作 在了解了Django提供的模型管理平台之后,我们来看看如何从代码层面完成对模型的CRUD(Create / Read / Update / Delete)操作。..., , ]> 说明1:由于员工与部门之间存在多对一外键关联,所以也能通过部门反向查询该部门的员工(从一对多关系中“一”...的一方查询“多”的一方),反向查询属性默认的名字是类名小写_set(如上面例子中的emp_set),当然也可以在创建模型通过ForeingKey的related_name属性指定反向查询属性的名字。

2.2K30

Django小技巧22: 设计一个好的模型

本篇目录: 命名你的Model Model定义顺序 反向关系 Blank 和 Null 命名 Model 模型定义使用CapWords约定(没有下划线)....模型的定义是对单个对象的表示, 而不是公司的集合. 这通常会导致混淆,因为我们倾向于通过数据库思考。模型最终被翻译成table.该表使用其复数形式命名的....在 DJango 中,我们可以通过Company.objects来访问集合. 我可以通过定义models.Manager重命名objects属性....QuerySet,其中包含与此公司相关的所有员工实例 Python google = Company.objects.get(name='Google') google.employees.all() 你也可以通过反向关系...在数据库级别上, 该字段可以为 NULL, 但在应用程序级别上, 它是必填字段(前提你通过 Django 标准的 Form 进行判断)。

87320

ORM常用字段介绍

它包含了你存储的数据的重要字段和行为。通常,一个模型(model)映射到一个数据库表, 基本情况: 每个模型都是一个Python类,它是django.db.models.Model的子类。...模型的每个属性都代表一个数据库字段。 综上所述,Django为您提供了一个自动生成的数据库访问API 详询官方文档链接。...ManyToManyField 用于表示多对多的关联关系。在数据库中通过第三张表来建立关联关系字段参数 to 设置要关联的表 related_name 同ForeignKey字段。...through 在使用ManyToManyField字段时,Django将自动生成一张表来管理多对多的关联关系。...但我们也可以手动创建第三张表来管理多对多关系,此时就需要通过through来指定第三张表的表名。 through_fields 设置关联的字段

2.5K10

Django中ORM介绍和字段及其参数

模型的每个属性都代表一个数据库字段。 综上所述,Django为您提供了一个自动生成的数据库访问API,详询官方文档链接。 ?...ManyToManyField 用于表示多对多的关联关系。在数据库中通过第三张表来建立关联关系。...Django有一套默认的按照一定规则生成数据模型对应的数据库表名,如果你想使用自定义的表名,就通过这个属性指定,比如: table_name='my_owner_table' 若不提供该参数, Django...如果你的数据模型中有 DateField 或 DateTimeField 类型的字段,你可以通过这个选项来指定lastest()是按照哪个字段进行选取的。...ordering 这个字段是告诉Django模型对象返回的记录结果集是按照哪个字段排序的。

2.8K80

Django(15)外键和表关系

外键删除操作 如果一个模型使用了外键。那么在对方那个模型被删掉后,该进行什么样的操作。可以通过on_delete来指定。可以指定的类型如下: CASCADE:级联操作。...注意:以上这些选项只是Django级别的,数据级别依旧是RESTRICT! 表关系 表之间的关系都是通过外键来进行关联的。而表之间的关系,无非就是三种关系:一对一、一对多、多对多等。...以后如果想要反向引用,那么是通过引用的模型的名字转换为小写的形式进行访问。...的对象,可以通过user来访问到对应的user对象。...并且FrontUser对象可以使用userextension来访问对应的UserExtension对象。 如果不想使用Django默认的引用属性名字。

2.1K40

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

执行查询 一旦你建立好数据模型之后,django会自动生成一套数据库抽象的API,可以让你执行增删改查的操作。这篇文档阐述了如何使用这些API。关于所有模型检索选项的详细内容,请见数据模型参考。...通过模型类直接访问它,像这样: >>> Blog.objects >>> b = Blog(name='...注意 管理器通常只可以通过模型类来访问,不可以通过模型实例来访问。这是为了强制区分表级别和记录级别的操作。 对于一个模型来说,Manager是QuerySet的主要来源。...Django 也提供反向获取关联对象的 API,就是由从被关联的对象得到其定义关系的主对象。...和你定义正向关联所用的方式一样,类的实例也可以赋予逆向关联方系: e.entrydetail = ed 关系中的反向连接是如何做到的? 其他对象关系的映射(ORM)需要你在关联双方都定义关系

4.3K20

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

django从入门到精通No.2----模型 一、前言 学过orm系统自然之道模型的重要性,很多web站点都需要与数据库交互,这个时候模型的设计就显得尤为重要,一个好的模型会使得项目方便管理并且易于维护...,比如我们学过的flask,里面的sqlalchemy就是这样一个优秀的模块,通过它可以快速和数据库建立通道,从而使得web编程更为高效,本文主要讲解django模型。...(字典类型) validators:自定义错误验证(列表类型) 注:数据参考来源w3cschool 四、关联关系 django提供了三种数据库关联关系,即多对一,一对一,多对多,废话不多说,就是干。...,你可以指定一个中介模型来定义多对多关系,可以将其它字段放在中介模型中,源模型字段使用through参数指向中介模型。...六、总结 以上就是django所有的关于模型的概念了,接下来小编将通过与数据库交互来带着大家一起操作表。

2.1K00

基于Django OneToOneField和ForeignKey的区别详解

一般来说,一个模型对于数据库中的一个表单。 字段(Fields)是模型的重要和唯一组成部分,他们由类别的属性值所指定。...,再删除此字段信息的时候同时删除包含ForeignKey字段的目标(object) PROTECT 通过django.db.IntegrityError中的ProtectedError来保护此字段不被删除...用于filter函数过滤和values函数 to_field 关系关联的相关对象名称 db_constraint 控制在数据库中是否应该建立这一字段的约束 swappable 用于控制这一字段对于可交换类模型的行为...members,这一字段通过through参数与membership联系起来,后者表示“成员资格”,即表示“团体”与“个人”之间关系的中间项,而“through_fields”字段即为中间项连接起来的两个类名...在概念上我们可以理解其为设置unique属性为True的一种类型,区别之处在于它“反向”的数值会返回一个目标值,这对于继承关系的表达十分有用,例如一下示例程序: from django.conf import

2.3K20

基于Django signals 信号作用及用法详解

通过字典形式传递的参数 2)post_init() django.db.models.signals.post_init 它和pre_init可以说是一对,也是作用于模型实例化时,它是在__init...参数: sender:描述ManyToManyField的中间模型类,这个中间模型类会在一个many-to-many字段被定义时自动被创建。...我们可以通过使用many-to-many字段的through属性来访问它 instance:被更新的多对多关系的实例。它可以是上面的sender,也可以是ManyToManyField的关系类。...:从关系中删除一个或多个对象前 / 后发送 “pre_clear/post_clear”:在关系解除之前 / 之后发送 reverse:正在修改的是正向关系或者反向关系,正向False,反向为True...Django模型系统中时。

2K20

Django基础篇-表关联对象

前向查询 如果一个模型具有 ForeignKey,那么该模型的实例将可以通过属性访问关联的(外部)对象。...反向查询 如果模型 1 有一个 ForeignKey,那么该 ForeignKey 所指向的模型 2 实例可以通过一个管理器 返回前面有 ForeignKey 的模型 1 的所有实例。...直接赋值 ②多表查询 Django 提供一种强大而又直观的方式来“处理”查询中的关联关系,它在后台自动帮你处理 JOIN。...若要跨越关联关系,只需使用关联的模型字段的名称,并使用双下划线分隔,直至你想要的字段: 这种跨越可以是任意的深度。 它还可以反向工作。若要引用一个“反向”的关系,只需要使用该模型的小写的名称。...当你基于 ManyToManyField 或反向的 ForeignKey 来过滤一个对象时,有两种不同种类的过滤器。考虑 Department/Student 关联关系 (一对多的关系)。 ?

1.2K40

后端框架学习-Django

简易图: 用户操作流程图: ---- MTV 模型 Django 的 MTV 模式本质上和 MVC 是一样的,也是为了各组件间保持松耦合关系,只是定义上有些许不同,Django 的 MTV 分别是指...参数=值&参数=值 信息片段:#subject锚点,直接定位到网页指定位置 Django如何处理URL?...ORM框架 ORM(对象关系映射),是一种程序技术,能够使用类和对象对数据库进行操作,从而避免通过SQL语句操作数据库。 作用 建立模型类和表之间的对应关系,允许我们通过面向对象的方式来操作数据库。...模型模型类-创建 from django.db import models class 模型类名(models.Model): 字段名 = models.字段类型(字段选项) 表名实际为 APP...,与 #list_display_links字段是互斥的 list_editable = ['price'] 关系映射 关系映射:一对一,一对多,多对多。

9.4K40

07-02 django 6-10

Django中models利用ORM对Mysql进行查表的语句(多个语句)? 字段查询 all():返回模型类对应表格中的所有数据。...条件格式: 模型类属性名__条件名=值 注意:此处是模型类属性名,不是表中的字段名 关于 filter 具体案例如下: 判等 exact。...BookInfo.objects.filter(id__gt = 3).count() 模型关系 一对多关系 例:图书类-英雄类 models.ForeignKey() 定义在多的类中。...说说nginx和uWISG 服务器之间如何配合工作的?...1.设计表时,尽量少使用外键,因为外键约束会影响插入和删除性能; 2.使用缓存,减少对数据库的访问; 3.在orm框架下设置表时,能用varchar确定字段长度时,就别用text; 4.可以给搜索频率高的字段属性

69240
领券