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

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

如两张表建立了一对一外键字段,外键A表,那么先往B表写数据就更合理。...假设图书管理系统中书、出版社、作者、作者详细信息四张表之间关系如下: """ 表关系 1)Book 和 Publish 一对:外键一方 Book 2)Book 和 Author :外键查询频率高一方...Book 3)Author 和 AuthorDetail 一对一:外键要根据实际需求建立合理位置 AuthorDetail(外键AuthorDetail方作者就可以没有AuthorDetail,...2)on_delete在外建中必须设置,表示级联关系Django1.x下系统默认提供(值为models.CASCADE),Django2.x下必须手动明确: CASCADE:默认值,级联 例子:作者被删...例子:部门没有了,部门员工里部门字段改为未分组部门id字段为NULL 注:对多字段不能设置on_delete级联关系,如果要处理级联关系,需要手动明确关系,处理表关系多个外键 3)db_constraint

4.3K30

Django&DRF重点内容大盘点

1.3一个程序注意点 1.3.1视图函数定义 1)定义视图函数之后,要有一个request形参接收请求对象。...2)返回时候用到了 HttpResponse这一命令返回响应对象 1.3.2url地址配置 1.子应用中urls.py文件中设置当前子应用中url地址和视图对应关系 urlpatterns =...查询和指定对象关联数据 由1查 一对象.类名小写_set.all() 例:book.heroinfo_set.all() 由查1...(label='图书') 注意:和对象关联对象如果有多个,序列化器中定义嵌套序列化字段时,需要添加many=True。...]) 注意:此处 about_django为我们自定义校验函数 2)序列化器类中定义特定方法 validate_针对特定字段进行补充验证 def validate_btitle

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

DjangoFlaskTornado三大web框架性能分析

远程性能:从远程服务器上返回 http response 时间 数据库性能:使用 ORM(对象关系映射)从数据库获取数据,并渲染到模板上时间 最基本 json 测试:Django 与 Flask...占优 单纯本地测试 json 序列化Django 完成一次 json 序列化平均时间 42.52 毫秒,每秒请求量 4762 次。...Tornado 好成绩得益于其自带异步特性,而 Django 与 Flask 是同步框架,处理请求时性能受限。...常有人说 Django 慢,其实主要慢 Django ORM 与数据库交互上,所以是否选用 Django,取决于项目对数据库交互要求以及各种优化。...总结,萝卜白菜各有所爱,然而机器效率(程序性能)与程序效率(可维护性、开发速度)是一对矛盾。选择什么样架构组合,取决于产品特性以及团队能力。

3.2K30

Django—模型

因此,对象-关系映射ORM系统一般以中间件形式存在,主要实现程序对象到关系数据库数据映射。...,但通过后台管理页面添加英雄信息时hcomment对应输入框不能为空 hbook = models.ForeignKey('BookInfo')#英雄与图书表关系一对,所以属性定义英雄模型类中...(queryset) View Code 上去 5.模型类关系 关系字段类型 关系型数据库关系包括三种类型: ForeignKey:一对,将字段定义一端中。...通过对象执行关联查询 定义模型类时,可以指定三种关联关系,最常用一对关系,如本例中"图书-英雄"就为一对关系。...: 对应模型类对象.对应模型类中关系类属性名 例: h = HeroInfo.objects.get(id=1) h.hbook  访问一对模型类关联对象id语法: 对应模型类对象.

6.1K21

Django(15)外键和表关系

注意:以上这些选项只是Django级别的,数据级别依旧是RESTRICT! 表关系 表之间关系都是通过外键来进行关联。而表之间关系,无非就是三种关系一对一、一对对多等。...以下将讨论一下三种关系应用场景及其实现方式。 一对 应用场景:比如文章和作者之间关系。一个文章只能由一个作者编写,但是一个作者可以写篇文章。...文章和作者之间关系就是典型对一关系 实现方式:一对,都是通过ForeignKey来实现。...articles: print(article) 一对Django一对一是通过models.OnetToOneField来实现。... 应用场景:比如文章和标签关系。一篇文章可以有多个标签,一个标签可以被多个文章所引用。因此标签和文章关系是典型关系

2.1K40

DjangoRestFramework,序列化组件、视图组件

(max_digits=5, decimal_places=2) #一对处理 # publish = serializers.CharField(max_length=32) #...publishDate": null, # "price": "122.00", # "publish": 2 # } # ] # 那如果一对关系那个...,会出现对多变量冲突问题,所以一般都将读操作和写操作分成两个序列化组件来写 # authors = serializers.SerializerMethodField() #也可以用来处理一对关系字段...等基础校验之外,还会会根据咱们写这个序列化组件中设置字段中有read_only=True属性字段排除掉,这也是为什么我们面写一对多字段时,如果字段名称和model表中或者一对字段名称相同...,那么用户提交过来数据中以这个字段命名数据会被剔除,那么validated_data里面就没有一对多字段数据了,那么再执行create方法时候validated_data.pop('authors

2.6K20

Django之Model世界

以前 Django 版本,没有任何办法改变 50 这个长度. 这暗示了 db_index=True....,就会为我们自动创建一张关系表) 一对: models.ForeignKey(其他表) 一对: 就是主外键关系 : models.ManyToManyField(其他表) :多个主外键关系...一对一:models.OneToOneField(其他表) 一对一:实质就是主外键关系基础上,给外键加了 问:什么是一对一,一对?...外键:有很多应用场景,比如每个员工归属于一个部门,那么就可以让员工表部门字段与部门表进行一对多关联,可以查询到一个员工归属于哪个部门,也可反向查出某一部门有哪些员工 :如很多公司,一台服务器可能会有多种用途...# 1、remove;删除关系表 # h = models.Host.objects.get(hid=1) # h.group_set.remove(*models.Group.objects.filter

2.2K20

Django之auth组件

一、Auth模块是什么   django内置用户认证系统 ,可以快速 实现,登录,注销,修改密码......也就是auth_user这个表中插入了一条数据(密码 是加密,所以我不能手动插入)   2、验证用户: from django.contrib import auth     user=auth.authenticate...-userInfo跟blog ---- 一对一 -article跟blog-----一对 -article跟category----(一篇文章只能由一个分类,一个分类下有篇文章)一对 -article...跟tag----(一个标签可以对应篇文章,一篇文章可以有多个标签) -commit跟Article---- 一对 -upanddown跟Article---- 一对 -user跟commit...---一对 -user跟upanddown---一对 -category跟blog----一对 -tag跟blog----一对 3 分任务开发(git) 4 测试 5 上线 博客项目

63920

Django项目知识点(三)

如果abstract = True 这个model就是一个抽象类 app_label 这个选型只一种情况下使用,就是你模型不在默认应用程序包下models.py文件中,这时候需要指定你这个模型是哪个应用程序...模型关系 基本原则: 一对表,两表属性实际上完全可以合并成一个表,共用一个主键即可; 一对表,可以设中间关联表,也可以将关联表并入“”这头;若设独立关联表,则可引入“”这头主键作为其主键...一对:当一张表中创建一行数据时,有一个单选下拉框(可以被重复选择) 一个学院信息表有多个学生信息表 再比如文章和作者之间关系。一个文章只能由一个作者编写,但是一个作者可以写篇文章。...文章和作者之间关系就是典型对一关系。作者和文章关系就是一对某表中创建一行数据是,有一个可以多选下拉框 不同学生有不同课程表 再比如文章和标签关系。...因此标签和文章关系是典型关系

1.8K30

重点内容回顾-DRF

django.db.models中包含了可选常量,常用有三种: a.CASCADE级联,删除主表数据时候,连同删除外键表中数据。这个就有点狠了,按需求慎用。...由一查一对象.类名小写__set.all() sub_areas = area.area_set.all() 一旦设置了 related_name='subs'时候,我们查询area下级地区时候...,validators=[about_django]) b.序列化器中定义一个方法 validate_,来对 字段进行验证。.../update/retrieve/destroy 2.进行url配置时候,要指明请求地址请求方式和视图集中处理函数之间对应关系。...5.6.4视图集中添加额外处理方法 1.直接在视图集定义额外处理方法即可 2.进行url配置时候也要指定请求地址请求方式和处理函数之间对应关系

2.4K20

django 模型关系

模型关系 关系数据库威力体现在表之间相互关联,Django提供了三种最常见数据库关系对一 (many-to-one),(many-to-many),一对一(one-to-one)...对一关系 对多关系 一对关系 对一 django是使用django.db.models.ForeignKey 定义对一关系 ForeignKey需要一个位置参数来指定本Model关联Model...clear() #从关联对象集中删除所有的对象 要实现,就要使用django.db.models.ManyToManyField类,和ForeignKey一样,它也有一个位置参数,用来指定和它关联...如果不仅仅需要知道两个Model之间是关系,还需要知道这个关系更多信息,比如Person和Group是关系,每个person可以多个group里,那么group里可以有多个person...名字 在哪个模型中设置 ManyToManyField 并不重要,两个模型中任选一个即可——不要在两个模型中都设置 一对一对一是通过django.db.models.OneToOneField

1.4K30

博客将 Django 1.11+ 升级到 Django 2.2+ 遇到问题及规避方法

但是,秉着向新技术看齐态度,我还是花了些时间(大概半天)把博客依赖 Django 升级到当前最新版 Django 2.2.6 版本了,升级过程中也遇到了很多问题,这些问题也是之前考虑到,所以基本都迎刃而解了...,安装所有依赖最新版本,这样就可以做到使用 django2.0 时候其他依赖组件也能支持 django。...,这个地方是说关于一些模型一对一关联和一对多关联(外键)时候需要指定 on_delete 参数才行,没有这个设置。...因为 Django 1.x 版本中,这个参数是有默认值,但是 Django 2.x 没有指定,所以需要显示设定一个值。...,与之关联值设置为null(前提该字段需要设置为可空,一对一同理) on_delete=models.SET_DEFAULT, # 删除关联数据,与之关联值设置为默认值(前提FK字段需要设置默认值,

91320

django开发中取消外键约束实现

# setting设置外键 'OPTIONS': { "init_command": "SET foreign_key_checks = 0;", } 补充知识:django-给外键关系传值...,删除外键关系 反查: 关系里 related_name = ‘反查name’,自己不设置,django也会默认设置为class小写名字+_set , ex: book_set....一对关系赋值: class ModelStudy(View): ''' ClassRoom和ClassNumber是一对关系,给外键传值 ''' def get(self, request):...类里名(room_number)在数据库名(room_number_id)      c.save() return HttpResponse("ojbk") 对一: 类似一对一,只是 ”一方可以对应多个...  可以add(t, t1, t2)多个对应关系 s.save() return HttpResponse("ojbk") 删除关系数据 先查出对应关系数据,删除 class ModelStudy

3.6K10

Django关系映射

什么是关系映射? 关系型数据库中,通常不会把所有数据都放在同一张表中,不易于扩展。...常见关系映射 一对一映射:例如一个身份证对应一个人 一对映射:例如一个班级可以有多个学生 一对映射:例如一个学生可以报考多个课程,一个课程可由多个学生学习....一对一映射(创建) 一对一是表示现实事物间存在一对对应关系。...---- 一对多是表现现实事物存在一对对应关系,例如一个学校有多个班级,一个班级有多个学生,一本书只能属于一个出版社,一个出版社可以出本书。...,每个学校都有不同学生 MySQL中创建需要以来第三张表来完成 Django中无需手动创建,Django自动完成 语法:关联两个类中任意一个类中models.ManyToManyField

1.7K20

Django之ORM数据库

MySQL    PyMySQL(纯pythonmysql驱动程序) 3     django项目中会默认使用sqlite数据库,settings里有如下设置: ?...  模型之间三种关系一对一,一对。              ...一对一:实质就是主外键(author_id就是foreign key)关系基础上,给外键加了一个UNIQUE=True属性;              一对:就是主外键关系;(foreign key...(如何处理外键关系字段如一对publisher和authors) #一对(ForeignKey): #方式一: 由于绑定一对字段,比如publish,存到数据库中字段名叫...,实际却删除了三条,因为我们删除这本书Book_authors表中有两条相关信息,这种删除方式就是django默认级联删除

2.5K10

Django ORM 多表操作

目录 Django ORM 多表操作 表模型 表关系 创建模型 逆向到表模型 插入数据 ORM 添加数据(添加外键) 一对(外键 ForeignKey) 一对一 (OneToOneFeild) ...(ManyToManyField):第三张关系表中新增数据 ORM 修改数据 ORM 删除和清空数据 跨表查询 基于对象跨表查询 基于双下划线跨表查询 聚合查询 示例 F查询 Q查询 Django...ORM 多表操作 表模型 图书表 出版社表 作者表 作者详情表 表关系 一对一:一对一推荐建在查询频率高一方 一对:外键字段建在一方 :外键字段建在查询频率一方,Django第三张表不需要创建...3、一般不需要设置联级更新. 4、外键一对中设置:models.ForeignKey("关联类名", on_delete=models.CASCADE)。...(ManyToManyField):第三张关系表中新增数据 方式一: 传对象形式,无返回值。

1.7K20

Django实战-信息资讯-详情页与评论

Django网络应用开发5项基础核心技术包括模型(Model)设计,URL 设计与配置,View(视图)编写,Template(模板)设计和Form(表单)使用。...news = News.objects.select_related('category', 'author').get(pk=news_id) select_related 主要针一对一和对一关系进行优化...也可以通过使用双下划线“__”连接字段名来实现指定递归查询。没有指定字段不会缓存,没有指定深度不会缓存,如果要访问的话 Django 会再次进行SQL查询。...也可以通过 depth 参数指定递归深度,Django 会自动缓存指定深度内所有的字段。如果要访问指定深度外字段,Django 会再次进行SQL查询。...也接受无参数调用,Django 会尽可能深递归查询所有的字段。但注意有Django 递归限制和性能浪费。

54020

Django数据库查询优化与AJAX

一对外键字段,特点:内部自动连表操作,会将括号内外键字段所关联表与当前表自动拼接成一张表,然后将表中数据一个一个查询出来封装成一个一个对象。...使用:主要用于对多字段和一对多字段 耗时:查询次数上 res = models.Book.objects.prefetch_related('publisher') for i in res...我们可以用0、1等数字代表男女等字段可能情况,将数字存入表中(可以是数字也可以是字符串,通常用-1表示数据短缺或者数据丢失),取出时候如果存储数字提前定义好关系中会,则会取出对应关系字符串,...2.对JSON数据进行序列化。 3.Django后端针对json格式数据不会做任何处理,只是将数据原封不动放在了request.body中,我们需要手动对其进行反序列化处理。...from django.core import serializers #调用该模块下方法,第一个参数是你想以什么样方式序列化数据 ret=serializers.serialize

2.3K20
领券