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

django 2.x版本models.ForeignKey()说明介绍

django2.0后,定义和一对一关系的时候需要加on_delete选项,此参数为了避免两个表里的数据不一致问题,不然会报错: TypeError: init() missing 1 required...PROTECT:此值设置,是会报完整性错误。 SET_NULL:此值设置,会把设置为null,前提是允许为null。 SET_DEFAULT:此值设置,会把设置为的默认值。...当我们查询一个组有那些用户的时候,就会用到当前的健, 创建记录 并且,class定义了foreignKey之后,group还不存在的同时,user表也因为约束的原因,不能被进行创建 删除记录 并且...,class定义了foreignKey之后,user记录存在的同时,group表记录也因为约束的原因,不能被进行删除 补充知识:owner = models.ForeignKey(User)...2.x版本models.ForeignKey()说明介绍就是小编分享给大家的全部内容了,希望能给大家一个参考。

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

Django 数据库迁移应该了解的操作

python manage.py makemigrations 这个命令是创建数据库迁移脚本,针对已经app已经修改的model生成迁移脚本 python manage.py migrate 这个命令是数据库执行迁移脚本同步到数据库...错误 数据库的命令稍有不慎可能就会掉坑。特别是migrate命令,由于django的数据库包含了migrations的记录,如果migrations文件丢失,很可能造成migrate失败。...所以有必要将migrations文件加入版本控制,保证开发的migrations记录和文件相匹配。...如果migrate出现了失败,很可能是因为migration文件包含的变更信息由于当前数据库的约束无法完完成。这时就应该去数据中找到这些记录的位置,删掉重做即可。...一般这些数据存在的表为:约束对应的表、auth_permission、django_content_type和django_migrations.

1.5K10

Sentry 开发者贡献指南 - 数据库迁移

例如:sentry django migrate sentry 0005 这也可用于回滚迁移。如果你犯了错误开发很有用。...在这种情况下,首先删除其他表列,然后返回到此步骤。 通过列上设置 db_constraint=False,删除此表到其他表的任何数据库级约束。... 创建大多没问题,但是对于像 Project、Group 这样的大/繁忙的表,由于获取锁的困难,它可能会导致问题。您仍然可以创建 Django 级别的,而无需创建数据库约束。...为此,请在定义设置 db_constraint=False。 重命名表 重命名表很危险,会导致停机。发生这种情况的原因是部署期间将运行旧/代码的混合。...停止写入旧表并从代码删除引用。 丢弃旧表。 一般来说,这是不值得做的,与回报相比,这需要冒很多风险/付出很多努力。 添加列 创建,它们应始终创建为可为空的。

3.6K20

DjangoORM操作

前言 Django框架功能齐全自带数据库操作功能,本文主要介绍Django的ORM框架 到目前为止,当我们的程序涉及到数据库相关操作,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb...,其主要目的是为了封装底层SQL语句; 1、字符串类(以下都是在数据库本质都是字符串数据类型,此类字段只是Django自带的admin中生效) name=models.CharField(max_length...1、无需连表查询性能低,省硬盘空间(选项不固定时用) 2、modle文件里不能动态增加(选项一成不变用Django的choice) 其他字段 db_index = True 表示设置索引 unique...通过对象的形式反向跨表:小写表名_set().all() 1对多 如果A表的1条记录对应B表N条记录成立,两表之间就是1对多关系;1对多关系 A表就是主表,B表为子表,ForeignKey...字段就建在子表; 如果B表的1条记录也对应A表N条记录,两表之间就是双向1对多关系,也称为多对多关系; orm设置如果 A表设置了字段user=models.ForeignKey('UserType

4.7K10

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

Django基表的设置 通过图书管理系统引入多表操作:如果我们创建表的方式是先抽象出表与表之间相同的字段建一个父类,然后在用每个表类去继承这个父类,如下面的代码,我们将无法得到期望的表字段。...如两张表建立了一对一字段,A表,那么先往B表写数据就更合理。...假设图书管理系统书、出版社、作者、作者详细信息四张表之间的关系如下: """ 表关系 1)Book 和 Publish 一对多:多的一方 Book 2)Book 和 Author 多对多:查询频率高的一方...值,related_name的默认值是表名小写 + _set,这就是为什么Django跨表反向查询我们使用表名小写 + _set去查另一张表的数据。...a.事物A按一定的条件从数据库读取某些数据记录后,事物B插入了一些记录,当B再次按照相同条件读取数据,发现多了一些记录。(也叫做幻影读)。

4.3K30

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

2.1 ForeignKey 1) on_delete Django 2.0 ,设置需要添加一个 on_delete选项。本身涉及到两个表的数据,况且在数据库是有约束行为。...如果设为 False , 这个字段将不会出现在 admin 或者其他 ModelForm 。 同时也会跳过 模型验证 。 error_messages:用于自定义错误提示信息。...例如,字段 title 设置了 unique_for_date="pub_date" ,那么Django将不会允许同一 pub_date 的两条记录的 title 相同。...如果用户没有定义该选项, Django会自动将自动创建,内容是该字段属性名的下划线转换为空格的结果。...而没有主动设置,则是 first name: first_name = models.CharField(max_length=30) 对于、多对多和一对一字字段,由于第一个参数需要用来指定关联的模型

2K30

Django---ORM操作大全

前言 Django框架功能齐全自带数据库操作功能,本文主要介绍Django的ORM框架 到目前为止,当我们的程序涉及到数据库相关操作,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb...多对多:某表创建一行数据是,有一个可以多选的下拉框 例如:创建用户信息,需要为用户指定多个爱好 ?...一对一:某表创建一行数据,有一个单选的下拉框(下拉框的内容被用过一次就消失了 例如:原有含10列数据的一张表保存相关信息,经过一段时间之后,10列无法满足需求,需要为原来的表再添加5列数据 1、...1对多 如果A表的1条记录对应B表N条记录成立,两表之间就是1对多关系;1对多关系 A表就是主表,B表为子表,ForeignKey字段就建在子表; 如果B表的1条记录也对应A表N条记录,两表之间就是双向...1对多关系,也称为多对多关系; orm设置如果 A表设置了字段user=models.ForeignKey('UserType')到B表(注意外表名加引号) 就意味着 写在写A表的B表主键,

6.8K100

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

除了创建模型之前,from_db() 必须设置实例_state 属性的adding 和 db 标志位。...例如,如果重新加载的实例有一个到另外一个模型Author,那么如果 obj.author_id !...ModelForm 使用这个参数来排除表单没有出现的字段,使它们不需要验证,因为用户无法修正这些字段的错误。 注意,当你调用模型的save() 方法,full_clean()不会 自动调用。...这个用于整个模型出现错误而不是一个特定字段出现错误: from django.core.exceptions import ValidationError, NON_FIELD_ERRORS try...如果你使用数据库已经存在的主键值创建一个的对象,Django 将假设你正在修改这个已存在的记录而不是创建一个记录

1.9K10

Web | Django 与数据库交互,你需要知道的 9 个技巧

由于数据库的锁机制,我们开始半夜发现事务超时错误。...(又)幸运的是,select_for_update 的一个选项 Django 2.0 可用: from django.db import transaction as db_transaction...索引(FK Indexes) 创建模型Django 会在所有创建一个 B-Tree 索引,它的开销可能相当大,而且有时候并不很必要。...从 Django 1.11 开始,有一个的 Meta 选项用于模型上创建索引。这给了我们探索其他类型索引的机会。 PostgreSQL 有一个非常有用的索引类型 BRIN(块范围索引)。...创建索引要考虑的要比索引的大小要多得多。但是现在,通过 Django 1.11 支持索引,我们可以轻松地将类型的索引整合到我们的应用程序,使它们更轻,更快。

2.8K40

关于“Python”的核心知识点整理大全59

下面来修改模型Topic,在其中添加一个关联到用户的。这样做后,我们必须对数据库 进行迁移。最后,我们必须对有些视图进行修改,使其只显示与当前登录的用户相关联的数据。 1....的模型User,然后Topic添加了字段owner,它建 立到模型User的关系。...OK (venv)learning_log$ Django应用的迁移,结果一切顺利(见1)。...如果你尝试 添加新主题,将看到错误消息IntegrityError,指出learning_logs_topic.user_id不能为NULL。...Django的意思是说,创建新主题,你必须指定其owner字段的值。 由于我们可以通过request对象获悉当前用户,因此存在一个修复这种问题的简单方案。

11510

Django模型

Django模型 Django的模型定义models.py文件。模型是MVT的M,也相当于MVC的M。 Django,模型必须继承自Model类。...默认创建的主键列属性为id,也可以使用pk,意为primary key. 字段名称不能出现双下划线,因为这是Django的查询语法之一。... 这个东西,通常都是在业务逻辑层面来实现的,而不是在数据库实现。但是通常大家学习的数据库课程,都会有数据库设计范式,其中有个第三范式就是专指的约束。在这里只是简单的介绍一下。...它的常用值可以如下: CASCADE级联,删除主表数据连通一起删除外数据 PROTECT保护,通过抛出ProtectedError异常,来阻止删除主表中被应用的数据 SET_NULL设置为NULL...,此选项会抛出IntegrityError异常 注意:我们在数据库,设置的时候需要制定另一张表关联的字段,但是Django里并没有指定。

1.9K20

Django项目知识点(三)

注意:Django一个模型只允许有一个自增字段,并且该字段必须为主键!...True, blank=True, help_text='课程简介') 改写字段传入validators参数改写的函数 null=True(默认是false,不能为空) blank=True 表示代码创建数据库记录该字段可传空白...=None   错误提示 auto_created=False   自动创建 help_text  Admin中提示帮助信息 validators=[] 验证器 upload-to 文件上传的保存上传文件的目录...PROTECT:此值设置,是会报完整性错误。 SET_NULL:此值设置,会把设置为null,前提是允许为null。 SET_DEFAULT:此值设置,会把设置为的默认值。...一对一:某表创建一行数据,有一个单选的下拉框(下拉框的内容被用过一次就消失了) 一个学生信息表就只用一个对应的详细信息表 再比如一个用户表和一个用户信息表。

1.8K30

Django框架学习(四)

order_by 1.7关联查询 1、查询和指定对象关联的数据(重点掌握) 由一查多:一对象.多类名小写__set.all() 由多查一:多对象.属性 2、通过模型类进行关联查询 查图书:一类.objects.get...|filter(多类名__字段__条件=值) 查英雄:多类.objects.filter(属性__字段__条件=值) 2.查询集 注意:对于queryset类的对象,可以继续调用之前的任何一个查询函数...两大特性: 1、惰性查询:只有使用查询集中的数据才会进行数据库真正查询操作 2、查询结果的缓存:如果使用同一个查询集,只有第一次使用查询集时会进行数据库的查询操作,然后Django框架就会把查询的结果存起来...注意:迁移生成表的时候,我们有可能碰到一个错误django.db.utils.InternalError: (1050, "Table 'tb_books' already exists") 这个错误发生...,我们迁移文件生成表的时候就不会出现这个错误了。

1.5K41

Django MVC概述和开发流程

数据库中表的命名为应用命_模型类名,而且模型类添加了则会生成命名为模型类名_id的字段。...多类记录访问一类直接使用st2.school即可,而在一类记录访问多类可以使用 # 一类.多类名小写_set.all() 返回的是多类实例对象组成的列表 sc3.studentinfo_set.all...用户浏览器地址栏输入url,请求到网站后,获取url信息,然后与编写好的urlpatterns列表项逐条匹配,如果匹配成功则调用对应的视图函数,如果所有的URLconf都没有匹配成功,则返回404错误...1.创建模板文件 Django项目根目录下创建templates目录,之后会在这个目录下创建若干个目录供各个应用使用,所以该目录下创建与应用同名的目录,然后再创建index.html,创建完后目录结构如下图所示...{# 注释 #} 表示注释,不会出现在最终渲染出来的html文件; {{ 变量名 }} 表示模板中使用变量,变量可以是从视图函数传递过来的,也可以是模板定义的; {% 代码段 %} 表示模板编写的代码段

1.7K10

Django之contenttypes的应用

Django contenttypes 应用 简介 contenttypes 是Django内置的一个应用,可以追踪项目中所有app和model的对应关系,并记录在ContentType表。...每当我们创建的model并执行数据库迁移后,ContentType表中就会自动新增一条记录。...比如我应用app01的models.py创建表class Electrics(models.Model): pass。从数据库查看ContentType表,显示如下: ? 那么这个表有什么作用呢?...在数据库,可以通过将优惠券和不同品类的商品表关联起来: from django.db import models class Electrics(models.Model): """...但是这样做是有问题的:实际商品品类繁多,而且很可能还会持续增加,那么优惠券表将越来越多,但是每条记录仅使用其中的一个或某几个字段。

76310

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

无该字段django自动创建,一个model不能有两个该字段。...1.多对一 因为是关联关系,所以我们必须指定两个类来进行相互操作,这里涉及到一个的操作,即ForeignKey字段,而且要定义多的一方。...db_constraint=True # 是否在数据库创建约束 parent_link=False # Admin是否显示关联数据 2.多对多 多对多的表...# Admin或ModelForm显示关联数据,提供的条件,字典类型 symmetrical=None # 仅用于多对多自关联,用于指定内部是否创建反向操作的字段,...,使用字段用于指定关系表那些字段做多对多关系表 db_constraint=True # 是否在数据库创建约束 db_table=None

2.1K00
领券