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

Django学习-第七讲:django 常用字段、字段属性和表关系操作

字段常用属性 1. null 如果设置为True,Django将会在映射表时候指定是否为空。默认是为False。...和表关系 在MySQL,表有两种引擎,一种是InnoDB,另外一种是myisam。如果使用是InnoDB引擎,是支持约束存在使得ORM框架在处理表关系时候异常强大。...因此这里我们首先来介绍下Django使用。 类定义为class ForeignKey(to,on_delete,**options)。...因此在底层,Django为Article表添加了一个属性名_id字段(比如author字段名称是author_id),这个字段是一个,记录着对应作者主键。...那么将会获取SET函数值来作为这个值。SET函数可以接收一个可以调用对象(比如函数或者方法),如果是可以调用对象,那么会将这个对象调用后结果作为值返回回去。

3.9K30

DjangoORM操作

正向查找:ForeignKey在 UserInfo表,如果UserInfo表开始向其他表进行查询,这个就是正向操作,反之如果UserType表去查询其他表这个就是反向操作。...__关联表字段 通过对象形式反向跨表:小写表名_set().all() 1对多 如果A表1条记录对应B表N条记录成立,两表之间就是1对多关系;在1对多关系 A表就是主表,B表为子表...,ForeignKey字段就建在子表; 如果B表1条记录也对应A表N条记录,两表之间就是双向1对多关系,也称为多对多关系; 在orm设置如果 A表设置了字段user=models.ForeignKey...__列,反向是小写表名 UserInfo.objects.values_list('nid','ug_id','ug__title') 反向连表: 反向操作无非2种方式: 1、通过对象形式反向跨表...:小写表面 _set().all() 2、通过 value 和 value_list 方式反向跨表:小写表名__字段 小写表名_set 得到有关系对象 obj = UserGroup.objects.all

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

Django模型最佳实践

related_name:用于获取关联对象关联管理器对象反向查询),如果不允许反向,该属性应该被设置为'+',或者以'+'结尾。 to_field:指定关联字段,默认关联对象主键字段。...on_delete:关联对象被删除时对应动作,可取值包括django.db.models定义: CASCADE:级联删除。...PROTECT:抛出ProtectedError异常,阻止删除引用对象。 SET_NULL:把设置为null,当null属性被设置为True时才能这么做。...SET_DEFAULT:把设置为默认值,提供了默认值才能这么做。 ManyToManyField属性 symmetrical:是否建立对称多对多关系。...through:指定维持多对多关系中间表Django模型。 throughfields:定义了中间模型时可以指定建立多对多关系字段。 db_table:指定维持多对多关系中间表表名。

2.2K40

django 字段类型_access数据库类型是

l 存储在数据库所有文件都是该文件路径(相对于MEDIA_ROOT)。如果ImageField调用了,则mug_shot可以使用来获取摸板图像绝对路径。...(15) ImageField 继承FileField所有的方法,但还验证上传对象为有效图像。除了 可用于特殊属性FileField,一个ImageField也具有height和width 属性。...为了便于查询这些属性ImageField有两个额外可选参数。在数据库创建为varchar列,默认最大长度为100字符。...SET_NULL:删除时把置为null,当null=True时才可以使用。 SET_DEFAULT:把置为默认值,必须要设置默认值时才可以使用。...(24) OneToOneField 一对一关系关系概念上与带有unique=TrueForeignKey相似,但是在关系另一侧(主表数据)直接返回单个对象

3.8K30

Django 学习笔记之模型高级用法(上)

2.1 ForeignKey 1) on_delete 在 Django 2.0 ,设置时需要添加一个 on_delete选项。本身涉及到两个表数据,况且在数据库是有约束行为。...2)limit_choices_to 该参数用于限制所能关联对象,只能用于 Django ModelForm(Django表单模块)和 admin 后台,对其它场合无限制功能。...4) related_name 用于关联对象反向引用模型名称。主要用于反向查询,即源模型实例通过管理器返回第一个模型所有实例。...用于目标模型反向过滤模型对象名称。...如果用户没有定义该选项, Django会自动将自动创建,内容是该字段属性下划线转换为空格结果。

2K30

Django基表创建、字段属性简介、脏数据概念、子序列化

假设图书管理系统书、出版社、作者、作者详细信息四张表之间关系如下: """ 表关系 1)Book 和 Publish 一对多:在多一方 Book 2)Book 和 Author 多对多:在查询频率高一方...更合理) """ Django orm中外字段属性详解 在建表之前我们对外字段属性进行了解: 1)related_name在外设置反向查询字段名:正向找字段名,反向找related_name...SET_DEFAULT:假设A表依赖B表,B记录删除,A表字段重置为default属性设置值,所以必须配合default属性使用。...例子:部门没有了,部门员工里部门字段改为未分组部门id字段为NULL 注:多对多字段不能设置on_delete级联关系,如果要处理级联关系,需要手动明确关系,处理表关系多个 3)db_constraint...,将两张表设置为级联,并将反向查询字段名设置为detail 数据库脏数据介绍 数据库中常见并发操作所带来了一致性问题包括:丢失修改,不可重复读,读“脏”数据,幻读。

4.3K30

Django---ORM操作大全

:(在django,根据代码类自动生成数据库表也叫--code first) ORM:Object Relational Mapping(关系对象映射) 类名对应------》数据库表名 类属性对应...正向查找:ForeignKey在 UserInfo表,如果UserInfo表开始向其他表进行查询,这个就是正向操作,反之如果UserType表去查询其他表这个就是反向操作。...小写表名 得到有关系列 #因为使用values取值取得是字典不是对象,所以需要 小写表名(表)__ v = UserGroup.objects.values('id'...此时Django为我们提供了F和Q查询: 1、F 可以获取对象字段属性(列),并对其进行操作; from django.db.models import F,Q #F 可以获取对象字段属性...import F,Q 1、F 可以获取对象字段属性(列),并且对其进行操作; # models.Book.objects.all().update(price=F('price'

6.8K100

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

,所以也能通过部门反向查询该部门员工(从一对多关系“一”一方查询“多”一方),反向查询属性默认名字是类名小写_set(如上面例子emp_set),当然也可以在创建模型时通过ForeingKey...related_name:用于获取关联对象关联管理器对象反向查询),如果不允许反向,该属性应该被设置为'+',或者以'+'结尾。 to_field:指定关联字段,默认关联对象主键字段。...on_delete:关联对象被删除时对应动作,可取值包括django.db.models定义: CASCADE:级联删除。...PROTECT:抛出ProtectedError异常,阻止删除引用对象。 SET_NULL:把设置为null,当null属性被设置为True时才能这么做。...SET_DEFAULT:把设置为默认值,提供了默认值才能这么做。 ManyToManyField属性 symmetrical:是否建立对称多对多关系

2.2K30

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

ImageField ClearableFileInput 所有属性和方法都继承自 FileField ,此外验证上传对象是不是有效图像。增加了 height 和 width 两个属性。...1.多对一 因为是关联关系,所以我们必须指定两个类来进行相互操作,这里涉及到一个操作,即ForeignKey字段,而且要定义在多一方。...db_constraint=True # 是否在数据库创建约束 parent_link=False # 在Admin是否显示关联数据 2.多对多 多对多表...,必须设中间关联表,关联表设独立主键,并引入两个“多”头主键作为关联表。...=None # 自定义第三张表时,使用字段用于指定关系那些字段做多对多关系表 db_constraint=True # 是否在数据库创建约束

2.1K00

Django ORM 多表操作

ORM 多表操作 表模型 图书表 出版社表 作者表 作者详情表 表关系 一对一:一对一推荐建在查询频率高一方 一对多:字段建在多一方 多对多:字段建在查询频率多一方,在Django第三张表不需要创建...添加数据(添加) 一对多( ForeignKey) 方式一: 传对象形式,返回值数据类型是对象,书籍对象 步骤: 获取出版社对象 给书籍出版社属性 pulish 传出版社对象 '''test.py...id 形式(常用) 一对多,设置属性类(多表),MySQL 显示字段名是:属性名_id。...(title="三国演义").first() book.authors.clear() 跨表查询 正向:字段在哪,去该表角度查另外表,就是正向 反向:从没有表去查另外相关联表,就是反向...口诀: 正向查询按字段 反向查询按表名小写 注意: 正向:属性反向:小写类名加 _set 反向查询时候查询对象可能有多个情况加__set,查询对象只有一个情况不需要加 基于对象跨表查询

1.7K20

Django之Model世界

(即俩个字段中间用_连接起来) 3、创建时候 models.ForeignKey(UserType)  ForeignKey参数代表类必须在其上面,否则就必须写成字符串形式 from django.db...在你 model 添加 FileField 或 ImageField, 并确保定义了 upload_to 选项,以告诉 Django 使用 MEDIA_ROOT 哪个子目录保存上传文件....一对一:models.OneToOneField(其他表) 一对一:实质就是在主外关系基础上,给加了 问:什么是一对一,一对多,多对多?...:有很多应用场景,比如每个员工归属于一个部门,那么就可以让员工表部门字段与部门表进行一对多关联,可以查询到一个员工归属于哪个部门,也可反向查出某一部门有哪些员工 多对多:如很多公司,一台服务器可能会有多种用途...'); //这里this是jQuery对象获取name属性 var v = $(this).val(); //获取对象值 var

2.2K20

DjangoAutoField字段使用

Django是一个机智框架】 默认情况下Djang会为ORM定义每一张表加上一个自增ID列,并且用这个列来做主键;出于一个MySQL-DBA工作经历我觉得 Djanog还真是机智;这样么说主要是因为我遇到过许多主从延时问题...补充知识:Djangomodels下常用Field以及字段参数 一、常见FieldType数据库字段类型 1、AutoField:自增Field域,自动增加一个数据库字段类型,例如id字段就可以使用该数据类型...4、default:为该字段设置默认值 四、关系字段 1、to:设置要关联表 2、to_field:设置要关联字段 3、related_name:反向操作时,使用字段名,用于代替原反向查询时...:删除关联数据: a、与之关联值设置为指定值,设置:models.SET(值) b、与之关联值设置为可执行对象返回值,设置:models.SET(可执行对象) 5、db_constraint:是否在数据库创建约束...,默认为True,db_constraint一般使用在建立数据表连接关系当中(例如创建),如果使用False,则是限制了表之间没有关联,达到了软连接效果 五、元信息 ORM对应类里面包含另一个Meta

6.4K20

django_2

要求 修改数据库 Django shell 数据级联(一对多) 元信息 定义字段 模型过滤 创建对象4种方式 查询集 过滤器 获取单个对象 字段查询 时间 聚合函数 跨关系查询 F对象 Q对象...dept 部门表:主表 emp 员工表:表 两张中有级联关系 带主键表是主表 带表是表 关联关系放在从表 (团员找班长--> 快) sql优化 一对多模型关系: class Grade...通过从表查询主表数据,显性属性 使用对象emp 调用e_dept属性 2....通过主表查询数据,隐性属性 使用主表对象dept 调用 emp_set(模型小写_set)属性 # 通过从表查询主表 def getDname(rquest): emp...__比较运算符,实际上就是处理数据库join Grade ---g_name Student---》s_name s_grade() gf = Student.objects.filter

3.6K30

Django基础——ORM字段和字段参数

ORM概念: 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象关系数据库存在互不匹配现象( 1....开发效率高   缺点:   执行效率有差距  ORM对应关系:   类 ---> 数据表   对象 ---> 数据行   属性 ---> 字段...ForeignKey -->     ForeignKey 字段参数;     a.to  --> 设置要关联表;     b.to_field -->设置要关联字段     ...一对多(出版社和书);1对多  ,通常设置在多那一边; publisher = models.ForeignKey(to="Publisher") 数据库实际 生成是一个 publisher_id...多对多(作者和书);多对多,通常设置在正向查询多那一边;比如我用author 查询 book 比较多,则把放在author.

1.6K20

Python全栈开发之Django基础

对象关系映射,是随着面向对象思想发展而产生,是一种程序技术,用于实现面向对象编程语言里不同类型系统数据之间转换,面向对象软件工程基本原则(如耦合、聚合、封装)基础上发展起来,而关系数据库则是数学理论发展而来...比较一个对象两个属性 list = BookInfo.objects.filter(bread__gt=F('bcomment') * 2) Q对象 多个过滤器逐个调用表示逻辑与关系,同sql语句中...) 聚合查询 使用aggregate()过滤器调用聚合函数,聚合函数包括:Avg,Count,Max,Min,Sum list = BookInfo.objects.count() 查询集 查询集表示数据库查询到对象集合...,表示当前会话,只有当Django 启用会话支持时才可用 HttpResponse对象 属性 content:表示返回内容。...() 清除session数据,在存储删除session整条数据 request.session.flush() 删除session指定及值,在存储只删除某个及对应值 del request.session

3.7K20

django 自带 user 字段扩展及头像上传

会同时生成 user 表和 user_profile 表 这个方法虽然是官方推荐,但是个人还是觉得很麻烦,获取 profile 字段值还需要通过 user 表获取 profile 实例,然后再获取字段值...,再考虑到 django 通过生成反向字段也需要做些处理,如果说我们只需要额外添加一个字段,需要做那么多工作,我是拒绝。...如果是在本地测试,数据库显示文件地址会是你本地项目的地址,但是当你客户端发出请求后,收到会是服务器地址,没毛病,不要以为自己保存路径错了。...3 补充一下 之前在讨论群(在公众号后台回复“django”,获取入群方式),有个老铁问如何通过存在数据库反向生成 model,因为比较简单,所以这边记顺带录下。...反向生成model 将生成代码复制到我们 models 文件,特别要注意下圈出来部分,大功告成!

2.1K30

DjangoORM介绍和字段及其参数

简单说,ORM是通过使用描述对象和数据库之间映射元数据,将程序对象自动持久化到关系数据库。   ORM在业务逻辑层和数据库层之间充当了桥梁作用。...在用户层面和业务逻辑层面,我们是面向对象。当对象信息发生变化时候,我们就需要把对象信息保存在关系数据库。...ORM优势   ORM解决主要问题是对象关系映射。 类和数据库表对应; 类每个实例对应表一条记录; 类每个属性对应表每个字段。...关系字段 ForeignKey   类型在ORM中用来表示关联关系,一般把ForeignKey字段设置在 '一对多''多'一方。   ...to="User", to_field="id", on_delete=models.SET(func) ) db_constraint:是否在数据库创建约束

2.8K80
领券