python 2.7.11 django 1.8.4 错误内容:related Field has invalid lookup: icontains 我原来默认认为在处理外键搜索的时候,django...哪些字段显示,在这里 remark 字段将不显示 admin.site.register(Category, CategoryAdmin) [ 说明 ] 在使用 Django admin 系统中的搜索时可能会出现...“related Field has invalid lookup: icontains”错误,主要原因是外键查询是需要指定相应的字段的。...补充知识:Django的model中使用外键,但在页面上显示的是xxx_object?...admin中配置搜索域是一个外键时的处理方法就是小编分享给大家的全部内容了,希望能给大家一个参考。
在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()外键说明介绍就是小编分享给大家的全部内容了,希望能给大家一个参考。
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.
例如:sentry django migrate sentry 0005 这也可用于回滚迁移。如果你犯了错误,在开发中很有用。...在这种情况下,首先删除其他表中的外键列,然后返回到此步骤。 通过在列上设置 db_constraint=False,删除此表到其他表的任何数据库级外键约束。...外键 创建外键大多没问题,但是对于像 Project、Group 这样的大/繁忙的表,由于获取锁的困难,它可能会导致问题。您仍然可以创建 Django 级别的外键,而无需创建数据库约束。...为此,请在定义键时设置 db_constraint=False。 重命名表 重命名表很危险,会导致停机。发生这种情况的原因是在部署期间将运行旧/新代码的混合。...停止写入旧表并从代码中删除引用。 丢弃旧表。 一般来说,这是不值得做的,与回报相比,这需要冒很多风险/付出很多努力。 添加列 创建新列时,它们应始终创建为可为空的。
前言 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
Django中基表的设置 通过图书管理系统引入多表操作:如果我们创建表的方式是先抽象出表与表之间相同的字段建一个父类,然后在用每个表类去继承这个父类,如下面的代码,我们将无法得到期望的表字段。...如两张表建立了一对一外键字段,外键在A表,那么先往B表写数据就更合理。...假设图书管理系统中书、出版社、作者、作者详细信息四张表之间的关系如下: """ 表关系 1)Book 和 Publish 一对多:外键在多的一方 Book 2)Book 和 Author 多对多:外键在查询频率高的一方...值,related_name的默认值是表名小写 + _set,这就是为什么在Django中跨表反向查询时我们使用表名小写 + _set去查另一张表的数据。...a.事物A按一定的条件从数据库中读取某些数据记录后,事物B插入了一些记录,当B再次按照相同条件读取数据时,发现多了一些记录。(也叫做幻影读)。
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) 对于外键、多对多和一对一字字段,由于第一个参数需要用来指定关联的模型
前言 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表主键,
除了创建新模型之前,from_db() 必须设置新实例_state 属性中的adding 和 db 标志位。...例如,如果重新加载的实例有一个外键到另外一个模型Author,那么如果 obj.author_id !...ModelForm 使用这个参数来排除表单中没有出现的字段,使它们不需要验证,因为用户无法修正这些字段的错误。 注意,当你调用模型的save() 方法时,full_clean()不会 自动调用。...这个键用于整个模型出现的错误而不是一个特定字段出现的错误: from django.core.exceptions import ValidationError, NON_FIELD_ERRORS try...如果你使用数据库中已经存在的主键值创建一个新的对象,Django 将假设你正在修改这个已存在的记录而不是创建一个新的记录。
由于数据库中的锁机制,我们开始在半夜发现事务超时错误。...(又)幸运的是,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 支持索引,我们可以轻松地将新类型的索引整合到我们的应用程序中,使它们更轻,更快。
下面来修改模型Topic,在其中添加一个关联到用户的外键。这样做后,我们必须对数据库 进行迁移。最后,我们必须对有些视图进行修改,使其只显示与当前登录的用户相关联的数据。 1....中的模型User,然后在Topic中添加了字段owner,它建 立到模型User的外键关系。...OK (venv)learning_log$ Django应用新的迁移,结果一切顺利(见1)。...如果你尝试 添加新主题,将看到错误消息IntegrityError,指出learning_logs_topic.user_id不能为NULL。...Django的意思是说,创建新主题时,你必须指定其owner字段的值。 由于我们可以通过request对象获悉当前用户,因此存在一个修复这种问题的简单方案。
对应app目录下的models.py 1、生成一个简单的数据库表: 在未指定primary_key的情况下,Django会默认创建一个id自增字段作为主键。...lambda : Q(Q(nid=8) | Q(nid__gt=10)) & Q(caption='root') db_constraint=True # 是否在数据库中创建外键约束...invite_reason = models.CharField(max_length=64) db_constraint=True, # 是否在数据库中创建外键约束...=2) #创建书的出版社信息,其与出版社的外键关系为一对多,所以用外键 publish = models.ForeignKey(Publish) #创建书的出版日期...这张表做为外键 book=models.ForeignKey("Book")#为书籍指定Book这张表做为外键 author_obj=models.Author.objects.filter(
Django模型 Django的模型定义在models.py文件中。模型是MVT中的M,也相当于MVC中的M。 在Django中,模型必须继承自Model类。...默认创建的主键列属性为id,也可以使用pk,意为primary key. 字段名称中不能出现双下划线,因为这是Django的查询语法之一。...外键 外键这个东西,通常都是在业务逻辑层面来实现的,而不是在数据库中实现。但是通常大家学习的数据库课程中,都会有数据库设计范式,其中有个第三范式就是专指的外键约束。在这里只是简单的介绍一下。...它的常用值可以如下: CASCADE级联,删除主表数据时连通一起删除外键表中数据 PROTECT保护,通过抛出ProtectedError异常,来阻止删除主表中被外键应用的数据 SET_NULL设置为NULL...,此选项会抛出IntegrityError异常 注意:我们在数据库中,设置外键的时候需要制定另一张表中关联的字段,但是在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:此值设置,会把设置为外键的默认值。...一对一:在某表中创建一行数据时,有一个单选的下拉框(下拉框中的内容被用过一次就消失了) 一个学生信息表就只用一个对应的详细信息表 再比如一个用户表和一个用户信息表。
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") 这个错误发生...,我们在迁移文件生成表的时候就不会出现这个错误了。
数据库中表的命名为应用命_模型类名,而且在模型类中添加了外键则会生成命名为外键模型类名_id的外键字段。...在多类记录中访问一类直接使用st2.school即可,而在一类记录中访问多类可以使用 # 一类.多类名小写_set.all() 返回的是多类实例对象组成的列表 sc3.studentinfo_set.all...用户在浏览器地址栏中输入url,请求到网站后,获取url信息,然后与编写好的urlpatterns列表项逐条匹配,如果匹配成功则调用对应的视图函数,如果所有的URLconf都没有匹配成功,则返回404错误...1.创建模板文件 在Django项目根目录下创建templates目录,之后会在这个目录下创建若干个目录供各个应用使用,所以在该目录下创建与应用同名的目录,然后再创建index.html,创建完后目录结构如下图所示...{# 注释 #} 表示注释,不会出现在最终渲染出来的html文件中; {{ 变量名 }} 表示在模板中使用变量,变量可以是从视图函数中传递过来的,也可以是在模板中定义的; {% 代码段 %} 表示在模板中编写的代码段
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): """...但是这样做是有问题的:实际中商品品类繁多,而且很可能还会持续增加,那么优惠券表中的外键将越来越多,但是每条记录仅使用其中的一个或某几个外键字段。
无该字段时,django自动创建,一个model不能有两个该字段。...1.多对一 因为是关联关系,所以我们必须指定两个类来进行相互操作,这里涉及到一个外键的操作,即ForeignKey字段,而且外键要定义在多的一方。...db_constraint=True # 是否在数据库中创建外键约束 parent_link=False # 在Admin中是否显示关联数据 2.多对多 多对多的表...# 在Admin或ModelForm中显示关联数据时,提供的条件,字典类型 symmetrical=None # 仅用于多对多自关联时,用于指定内部是否创建反向操作的字段,...,使用字段用于指定关系表中那些字段做多对多关系表 db_constraint=True # 是否在数据库中创建外键约束 db_table=None
auto_now_add:配置auto_now_add=True,创建数据记录的时候会把当前时间添加到数据库。...其它属性详情请查看:官方文档 关系字段 ForeignKey 外键类型在ORM中用来表示外键关联关系,一般把ForeignKey字段设置在 ‘一对多’中’多’的一方。...user = models.ForeignKey( to="User", to_field="id", on_delete=models.SET(func) ) - db_constraint:是否在数据库中创建外键约束...through:在使用ManyToManyField字段时,Django将自动生成一张表来管理多对多的关联关系。...db_table:默认创建第三张表时,数据库中表的名称。
创建表需要链接外键时,需要注意的事项。...() pub_date=models.DateField() publish=models.ForeignKey("Publish",on_delete=models.CASCADE) # 添加外键的时候...重写User外键重复问题 python Migrate 出现以下错误 auth.User.groups: (fields.E304) Reverse accessor for ‘User.groups...在setting里添加 AUTH_USER_MODEL = ‘users.UserProfile’ 即可解决问题。...以上这篇django 外键创建注意事项说明就是小编分享给大家的全部内容了,希望能给大家一个参考。
领取专属 10元无门槛券
手把手带您无忧上云