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

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

表关系 在MySQL,表有两种引擎,一种是InnoDB,另外一种是myisam。如果使用的是InnoDB引擎,是支持约束的。的存在使得ORM框架在处理表关系的时候异常的强大。...因此这里我们首先来介绍下Django的使用。 类定义为class ForeignKey(to,on_delete,**options)。...比如有一个Category一个Article两个模型。一个Category可以有多个文章,一个Article只能有一个Category,并且通过进行引用。...因此在底层,Django为Article表添加了一个属性名_id的字段(比如author的字段名称是author_id),这个字段是一个,记录着对应的作者的主键。...如果的那条数据被删除了,那么本条数据上就将这个字段设置为默认值。如果设置这个选项,前提是要指定这个字段一个默认值。 5.SET():如果的那条数据被删除了。

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

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

如两张表建立了一对一字段在A表,那么先往B表写数据就更合理。...假设图书管理系统书、出版社、作者、作者详细信息四张表之间的关系如下: """ 表关系 1)Book Publish 一对多:在多的一方 Book 2)Book Author 多对多:在查询频率高的一方...Book 3)Author AuthorDetail 一对一:要根据实际需求建立在合理的位置 AuthorDetail(在AuthorDetail方作者就可以没有AuthorDetail,...更合理) """ Django orm中外字段属性详解 在建表之前我们对外字段属性进行了解: 1)related_name在外设置反向查询的字段名:正向找字段名,反向找related_name...4.幻读:一个事务相同的查询条件重新读取以前检索过的数据,却发现其他事务插入了满足其查询条件的新数据,这种现象就称为“幻读”。

4.3K30

Django框架学习(四)

order_by 1.7关联查询 1、查询指定对象关联的数据(重点掌握) 由一查多:一对象.多类名小写__set.all() 由多查一:多对象.属性 2、通过模型类进行关联查询 查图书:一类.objects.get...|filter(多类名__字段__条件=值) 查英雄:多类.objects.filter(属性__字段__条件=值) 2.查询集 注意:对于queryset类的对象,可以继续调用之前的任何一个查询函数...注意特点重点掌握,其他的了解一下就可以了。 3.admin站点 Django框架提供了一个admin站点,可以让用户来管理网站的数据表的内容。...定义模型admin的管理类,继承于admin.ModelAdmin 2)admin.site.register(模型类,admin管理类) 3)在Admin管理类通过对应的类属性控制admin界面内容...使用: 1、在配置文件设置配置项MEDIA_ROOT=‘上传文件的保存目录’ 2、定义模型类时,图片字段的类型使用’imageField’ 3、迁移生成表,并在admin.py注册模型类,直接登录admin

1.5K41

Django分组聚合查询实例分享

high_price 50; 聚合查询—基于ORM 聚合函数的使用场景: 单独使用:不分组,只查聚合结果 分组使用: 字段分组,可查分组字段聚合结果 导入聚合函数: from django.db.models...取字段值 values() 省略默认取所有分组字段聚合字段,也可以自己定义(对非分组或非聚合字段,该字段自动被变成分组字段) # 案例:每个出版社出版的最贵的书的价格高于50元的出版社名与最高价格...ForeignKey(): 字段 to= 关联模型类 (一对多) to_file = 关联字段,省略默认关联主键 on_delete (关联数据被删除时的操作) models.CASCADE...OneToOneField(): 一对一字段 3, ManyToManyField() :多对多关系 to = 关联模型类 through=关联关系类 through_fields关联关系表...(本身字段,关联字段) 断开外关联的ForeignKey使用(一对多,一对一) # 一对多查询 —-(publish and book) # 方式一 : 不使用,在book 添加 publish_id

1.8K10

Django---ORM操作大全

1、无需连表查询性能低,省硬盘空间(选项不固定时用) 2、在modle文件里不能动态增加(选项一成不变用Django的choice) 其他字段 db_index = True 表示设置索引 unique...小写表名; 1对多:对象..关联表字段,values(字段__关联表字段) 多对多:字段.all() 反向连表操作总结:  通过value、value_list、fifter 方式反向跨表...1对多关系,也称为多对多关系; 在orm设置如果 A表设置了字段user=models.ForeignKey('UserType')到B表(注意外表名加引号) 就意味着 写在写A表的B表主键,...aggregate()每一个参数都指定一个包含在字典的返回值。即在查询集上生成聚合。...此时Django为我们提供了FQ查询: 1、F 可以获取对象字段的属性(列),并对其进行操作; from django.db.models import F,Q #F 可以获取对象字段的属性

6.8K100

使用Django实现把两个模型类的数据聚合在一起

Django想要把模型类聚合得到想要的数据可以用F对象。 比如有模型类AB,AB之间有关联在一起,A是子表,B是父表(反过来没试过。。...models.Model): # 写一个方法,定义在管理页面上能够显示的字段字段 # grade为Students模型的检表,level为Grades模型的检表,那么为Level模型的字段...添加的是'模型类字段' # 如果是需要遵循这样的语法:本表字段__(双下划线)检表字段检表的字段__最终表要显示的字段。...为子表(有所在的表) class ScoreInline(admin.TabularInline): # Score 必须是models.py的模型名称,大小写必须要匹配.这个模型为子表,以便可以被父表编辑...以上这篇使用Django实现把两个模型类的数据聚合在一起就是小编分享给大家的全部内容了,希望能给大家一个参考。

1.4K20

DjangoORM操作

1、无需连表查询性能低,省硬盘空间(选项不固定时用) 2、在modle文件里不能动态增加(选项一成不变用Django的choice) 其他字段 db_index = True 表示设置索引 unique...四、ORM连表操作 我们在学习django的orm的时候,我们可以把一对多,多对多,分为正向反向查找两种方式。...小写表名; 1对多:对象..关联表字段,values(字段__关联表字段) 多对多:字段.all() 反向连表操作总结: 通过value、value_list、fifter...A表就是主表,B表为子表,ForeignKey字段就建在子表; 如果B表的1条记录也对应A表N条记录,两表之间就是双向1对多关系,也称为多对多关系; 在orm设置如果 A表设置了字段user=...:小写表面 _set().all() 2、通过 value value_list 方式反向跨表:小写表名__字段 小写的表名_set 得到有关系的对象 obj = UserGroup.objects.all

4.7K10

Django 系列博客(十二)

Django 系列博客(十二) 前言 本篇博客继续介绍 Django 的查询,分别为聚合查询分组查询,以及 F Q 查询。...的名称是聚合值得标识符,值是计算出来的聚合值。建的名称是按照字段聚合函数的名称自动生成出来的。如果你想要为聚合值指定个名称,可以向聚合子句提供它。...,就不能直接比较,必须借助 F()的实例,可以在查询引用字段,来比较同一个 model 实例两个不同字段的值。...通常不用: 约束性太强 查询效率低 可以通过db_constraint=False来取消约束,在 orm 创建表的时候,的约束不会存在,但是这样会产生脏数据。...建约束,包括 unique 都是为了不产生脏数据。

44740

Python进阶29-ORM介绍

查询数据的SQL语句 基于双下划线查询 聚合查询 分组查询 F查询 Q查询 ORM反向生成models ORM常用非常用字段 ORM字段参数 ORM关系字段 OneToOneField...的名称是聚合值的标识符,值是计算出来的聚合值。的名称是按照字段聚合函数的名称自动生成出来的。如果你想要为聚合值指定一个名称,可以向聚合子句提供它。...Admin是否允许用户输入为空 editable Admin是否可以编辑 help_text Admin字段的提示信息 choices...**ForeignKey** 类型在ORM中用来表示关联关系,一般把ForeignKey字段设置在 '一对多''多'的一方。...ForeignKey可以其他表做关联关系同时也可以自身做关联关系。

4.4K10

Django 模型层之多表操作

models.CharField(max_length=255) price = models.DecimalField(max_digits=5, decimal_places=2) # ...Author) def __str__(self): return self.name 注意事项: 1.id字段不写的话会自动添加 2.对于字段,Django会在字段名上添加..."_id"来创建数据库的列名 3.字段ForeignKey有一个null=True的设置,你可以赋给它空值None 二.添加表记录 一对一: # 方式一: detail_obj = models.AuthorDetail.objects.filter...的名称是聚合值的标识符,值是计算出来的聚合值,的名称是按照字段聚合函数的名称自动生成出来的,如果你想要为聚合值指定一个名称,可以向聚合子句提供一个名字。...Django提供了以下聚合函数 1.expression 引用模型字段的一个字符串,或者一个query expression 2.output_field 用来表示返回值的model field

1.3K20

06.Django基础五之django模型层(二)多表操作

一 创建模型 表表之间的关系     一对一、多对一、多对多 ,用book表publish表自己来想想关系,想想里面的操作,加约束不加约束的区别,一对一的约束是在一对多的约束上加上唯一约束...注意事项: 表的名称myapp_modelName,是根据 模型的元数据自动生成的,也可以覆写为别的名称   id 字段是自动添加的 对于字段Django 会在字段名上添加"_id" 来创建数据库的列名...字段 ForeignKey 有一个 null=True 的设置(它允许接受空值 NULL),你可以赋给它空值 None 。   ...但是我们就不能使用ORM相关的方法了,所以我们单纯的将换成一个其他字段类型,只是单纯的存着另外一个关联表的主键值是不能使用ORM方法的。...的名称是聚合值的标识符,值是计算出来的聚合值。的名称是按照字段聚合函数的名称自动生成出来的。如果你想要为聚合值指定一个名称,可以向聚合子句提供它。

2.7K20

Django ORM 多表操作

ORM 多表操作 表模型 图书表 出版社表 作者表 作者详情表 表关系 一对一:一对一推荐建在查询频率高的一方 一对多:字段建在多的一方 多对多:字段建在查询频率多的一方,在Django第三张表不需要创建...,自动创建 ps:字段不需要写表名_id后面的_id,ORM创建的时候自动添加了_id,以及以虚拟字段的形式存在 创建模型 '''models.py''' from django.db import...设置属性的类(多的表),MySQL 显示的字段名是:属性名_id。...,去从该表的角度查另外的表,就是正向 反向:从没有表去查另外相关联的表,就是反向 口诀: 正向查询字段 反向查询表名小写 注意: 正向:属性名 反向:小写类名加 _set 反向查询的时候查询的对象可能有多个的情况加...在Django中使用聚合函数需要导入:from django.db.models import Sum,Max,Min,Min,Count,Avg 注意: 使用聚合函数查询的时候,建议把聚合结果字段重命名

1.7K20

后端框架学习-Django

聚合查询 聚合查询是指对一个表的一个字段的数据进行部分或全部进行统计查询。 分为整表聚合分组聚合。...创建一对一数据 无的模型类,之前相同 有的模型类: wife = Wife.objects.create(name=’王夫人’,author = author1(类属性名称绑实例...)) wife = Wife.objects.create(name=’王夫人’,author_id = 1(类属性字段绑值)) 一对一查询 正向查询:从查对象 反向查询:从对象查 调用反向属性查询到关联的一方...一对多查询 核心:正向属性(authors)反向属性(book_set) 在多表上设置,关联一表。...无的模型类,之前相同 有的模型类: 类似上面 wife = Wife.objects.create(name=’王夫人’,author = author1(类属性名称绑实例)

9.4K40

Django相关知识点回顾

13.2.2.2for循环 b) Django模板的for循环jinja2模板for循环对比。...class Meta: db_table = '' 定义属性: # 表中外字段名格式: hbook = models.ForeignKey('BookInfo...import Count, Sum, Avg, Max, Min 使用aggregate()过滤器调用聚合函数 排序: 排序默认是升序,降序在排序字段前加- 使用order_by 关联查询: 1.查询指定对象关联的数据...='八') # 查英雄(多) 多类.objects.filter(属性__字段__条件=值) 例:heros = HeroInfo.objects.filter(hbook__bread__gt=30...使用 1.在配置文件设置配置项MEDIA_ROOT='上传文件的保存目录' 2.定义模型类时,图片字段的类型使用 ImageField 3.迁移生成表并在admin.py注册模型类,直接登录Admin

10K51

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

ForeignKey -->     ForeignKey 字段的参数;     a.to  --> 设置要关联的表;     b.to_field -->设置要关联的表的字段     ...一对多(出版社和书);1对多  ,通常设置在多的那一边; publisher = models.ForeignKey(to="Publisher") 数据库实际 生成的是一个 publisher_id...default=99.99) kucun = models.IntegerField(default=10000) sell_num = models.IntegerField(default=0) # 书出版社关联的...,1对1的(ForeignKey(to=)),是需要添加的 # 而书作者是多对多的,一本书可以有多个作者,还有一个作者也可能有多本书,即多对多的时候用(ManyToManyField(to=))...ORM的用法   OneToOneField(to="") 举例:作者作者详情是一对一的;跟一对多,用法相同,只不过detail里面的不能重复;在数据库也是多一个detail_id 字段 总结

1.6K20

django models.py(pythondjango)

verbose_name='描述信息') brand = models.ForeignKey(Brand, on_delete=models.CASCADE, verbose_name='品牌') # ...admin.site.register(Brand) admin.site.register(Goods) 1) 数据库表名 模型类如果未指明表名,Django默认以小写app应用名_小写模型类名为数据库表名...python manage.py migrate 查询总数量大于库存的商品 2.6sql的and、or 2.7mysql的聚合函数 使用aggregate()过滤器调用聚合函数。...聚合函数包括:Avg平均,Count数量,Max最大,Min最小,Sum求和 例如:查询所有商品的总数量 2.8mysql的排序 2.9关联查询 回顾一下表与表的关系,goods表有 brand...verbose_name='描述信息') brand = models.ForeignKey(Brand, on_delete=models.CASCADE, verbose_name='品牌') #

1K10
领券