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

Django仅允许非关系和外键

Django是一个开源的Python Web框架,它提供了一套高效、灵活且易于使用的工具和功能,用于快速开发Web应用程序。Django的设计理念是DRY(Don't Repeat Yourself),它鼓励开发者遵循最佳实践,减少重复的代码和冗余的工作。

Django允许非关系和外键的概念是指在Django的模型(Model)中,可以定义非关系型字段和外键字段。非关系型字段用于存储非关系型数据,例如文本、数字等,而外键字段用于建立模型之间的关联关系。

非关系型字段包括:

  1. CharField:用于存储字符串类型的数据。
  2. TextField:用于存储大文本类型的数据。
  3. IntegerField:用于存储整数类型的数据。
  4. FloatField:用于存储浮点数类型的数据。
  5. BooleanField:用于存储布尔类型的数据。
  6. DateField:用于存储日期类型的数据。
  7. DateTimeField:用于存储日期和时间类型的数据。

外键字段用于建立模型之间的关联关系,它指向另一个模型的主键。通过外键字段,可以在模型之间建立一对一、一对多或多对多的关系。在Django中,外键字段使用ForeignKey来定义。

Django的非关系和外键的优势包括:

  1. 数据一致性:通过外键字段,可以建立模型之间的关联关系,确保数据的一致性和完整性。
  2. 数据查询和过滤:可以使用外键字段进行数据查询和过滤,方便获取相关联的数据。
  3. 数据关联操作:通过外键字段,可以进行数据关联操作,例如级联删除、级联更新等。
  4. 数据模型的可扩展性:非关系和外键的概念使得数据模型之间的关系更加灵活,方便进行扩展和修改。

Django中推荐的腾讯云相关产品和产品介绍链接地址如下:

  1. 云服务器(CVM):提供弹性计算能力,支持按需购买和弹性扩展。详情请参考:https://cloud.tencent.com/product/cvm
  2. 云数据库MySQL版(CDB):提供高可用、可扩展的MySQL数据库服务。详情请参考:https://cloud.tencent.com/product/cdb_mysql
  3. 云存储(COS):提供安全可靠的对象存储服务,适用于存储和处理各种类型的数据。详情请参考:https://cloud.tencent.com/product/cos
  4. 人工智能机器学习平台(AI Lab):提供丰富的人工智能算法和模型,支持开发和部署机器学习应用。详情请参考:https://cloud.tencent.com/product/ailab
  5. 云函数(SCF):提供事件驱动的无服务器计算服务,支持按需运行代码。详情请参考:https://cloud.tencent.com/product/scf

以上是关于Django允许非关系和外键的概念、优势以及推荐的腾讯云相关产品的介绍。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Django(15)关系

删除操作 如果一个模型使用了。那么在对方那个模型被删掉后,该进行什么样的操作。可以通过on_delete来指定。可以指定的类型如下: CASCADE:级联操作。...如果对应的那条数据被删除了,那么这条数据也会被删除。 PROTECT:受保护。即只要这条数据引用了的那条数据,那么就不能删除外的那条数据。 SET_NULL:设置为空。...如果的那条数据被删除了,那么本条数据上就将这个字段设置为默认值。如果设置这个选项,前提是要指定这个字段一个默认值。 SET():如果的那条数据被删除了。...注意:以上这些选项只是Django级别的,数据级别依旧是RESTRICT! 表关系 表之间的关系都是通过来进行关联的。而表之间的关系,无非就是三种关系:一对一、一对多、多对多等。...这个中间表分别定义了两个,引用到articletag两张表的主键。

2.1K40

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

因此如果再使用null=True,Django会产生两种空值的情形(NULL或者空字符串)。如果想要在表单验证的时候允许这个字符串为空,那么建议使用blank=True。...关系 在MySQL中,表有两种引擎,一种是InnoDB,另外一种是myisam。如果使用的是InnoDB引擎,是支持约束的。的存在使得ORM框架在处理表关系的时候异常的强大。...因此这里我们首先来介绍下Django中的使用。 类定义为class ForeignKey(to,on_delete,**options)。...比如有一个Category一个Article两个模型。一个Category可以有多个文章,一个Article只能有一个Category,并且通过进行引用。...因此在底层,Django为Article表添加了一个属性名_id的字段(比如author的字段名称是author_id),这个字段是一个,记录着对应的作者的主键。

3.9K30

django模型中有关系的表删除相关设置

0904自我总结 django模型中有关系的表删除相关设置 一.一对一 例如有Author、AuthorDetail两表 author = models.OneToOneField(to='Author...AuthorDetail表中:作者删除详情删除,详情删除作者保留 2)作者找详情用 related_name(detail),详情找作者用 字段(author) 3)db_constraint...Book表中(多的一方):出版社删除书不动,书删除没有任何影响 2)出版社找书用 related_name(books),书找出版社 字段(publish) 3)db_constraint...断开表关联,on_delete规定逻辑关联删除动作,models.DO_NOTHING关联无动作 三.以外字段关联 1)断关联,删除关联表记录,键值置空 db_constraint=False,...:出版社删除或书删除彼此不影响,但关系表一定级联删除 2)正向找 字段,反向找 字段related_name 3)db_constraint断开表关联,on_delete不存在(不设置,本质在第三张表中设置

3K20

django 引用自身on_delete参数

如果对应的那条数据被删除了,那么这条数据也会被删除。 PROTECT:受保护。即只要这条数据引用了的那条数据,那么就不能删除外的那条数据。如果我们强行删除,Django就会报错。...注意:以上的配置都是django级别的,在数据库中的级别依旧是RESTRICT 数据库层面的约束有: RESTRICT:默认的选项,如果想要删除父表的记录时,而在子表中有关联该父表的记录,则不允许删除父表中的记录...、update的时候,子表会将关联记录的字段所在列设为null,所以注意在设计子表时不能设为not null; 为什么在django中可以是用不同的约束去操作数据库呢。...比如 django 中 on_delete=CASCADE, 但是数据库的约束是RESTRICT....在进行删除A表数据时,发现被约束着,使数据不能被删除,则django会先去删除约束的B表数据,然后再来删除A表数据。

1.3K20

Django——ContentType(与多个表建立关系)及ContentType-signals的使用

也就是说,今后,我们如果自己定义model如果有关联到這个ContentType上,我们就能找到对应的model名称。...对于新鲜事这个功能来说就是使用GenericRelation来产生一个特殊的,它不像models.ForeignKey那样,必须指定一个Model来作为它指向的对象。...date = models.DateTimeField(verbose_name="答题日期", auto_now_add=True)   但是,如果我有另外一个需求,也需要与SurveryRecord建立关系...是再给上面的表增加一个,然后重新修改数据库么?显然是不能,一旦数据库被创建了,我们几乎很少再去修改数据,如果再给其添加额外字段,无疑会带来不必要的麻烦。...总之,如果一个表与其他表有多个关系,我们可以通过ContentType来解决这种关联。

4.3K20

Hibernate之关联关系映射(一对一主键映射一对一映射)

1:Hibernate的关联关系映射的一对一映射:   1.1:第一首先引包,省略   1.2:第二创建实体类:     这里使用用户信息身份证信息的关系,用户的主键编号既可以做身份证信息的主键又可以做身份证信息的...,这里先做。     ...创建User.java: 用户身份证一对一的关联关系映射           private IdCart idCart;     IdCart.java: 身份证用户,一对一的关系          ...-- 第三部分,加载映射文件,一对一主键的映射的练习 --> 38 39... 42 43 44 45   1.5:最后测试,既可以完成对一对一映射的使用学习

1.3K70

Django model 层之Models与Mysql数据库小结

参考链接: https://docs.djangoproject.com/en/1.11/topics/db/models/#field-options 关联关系 关联 假设artist model...对应mysql表为 myapp_album, Musician model对应的mysql表为Musician表为myapp_musician,则以下field定义,会使两个mysql表建立关联关系...删除被参照表的某条表记录,同时级联删除参照表中,同待删除记录存在外关联关系的记录。 PROTECT 删除被参照表中的某条表记录,如果参照表中,存在与该记录有关系的记录,则不让删除。...SET_NULL 删除被参照表的某条表记录,设置参照表中,同待删除记录存在外关联的记录的列值为null。当且当设置了null=True选项时可用。...SET() 删除被参照表的某条表记录,设置参照表中,同待删除记录存在外关联关系的记录的列值为传递给SET()的参数值,如果传递给SET()的参数值是可调用对象,则设置为调用可调用对象获取的结果。

2.2K20

Django 多数据库配置与使用总结

Django 多数据库配置与使用总结 By:授客 #实践环境 Win 10 Python 3.5.4 Django-2.0.13.tar.gz 官方下载地址: https://www.djangoproject.com.../download/2.0.13/tarball/ #需求描述 项目开发中,部分业务功能的实现,需要跨数据库查询,并且想通过Django自带ORM来实现 #解决方案 为Django配置多数据库,具体操作步骤如下...在settings.py中新增app和数据库的映射关系(如果没有的话),即针对指定app,配置其需要连接的数据库 APP_DATABASE_MAPPING = { # 映射配置名称,可自定义 'mysite...obj1obj2建立关联关系,供多对多操作使用,如果返回True则表示允许,如果返回False则阻止建立关联关系,如果返回None则表示允许在相同数据库内的对象建立关联关系(备注:笔者亲测,执行...save()保存包含关联对象,或者通过某个对象获取关联对象,该函数都不会被执行 """ db_obj1 = DATABASE_MAPPING.get(

2.7K20

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

目录 命令 将您的数据库升级到最新 将您的数据库移动到特定的迁移 为迁移生成 SQL 生成迁移 将迁移合并到 master 指南 过滤器 索引 删除列/表 列 表 重命名表 添加列 向列添加 NOT...在这种情况下,首先删除其他表中的列,然后返回到此步骤。 通过在列上设置 db_constraint=False,删除此表到其他表的任何数据库级约束。...部署 从 sentry 代码库中删除模型所有引用。确保迁移将状态标记为已删除。 部署。 创建一个删除表的迁移。...接下来,我们需要删除 db 级约束。... 创建大多没问题,但是对于像 Project、Group 这样的大/繁忙的表,由于获取锁的困难,它可能会导致问题。您仍然可以创建 Django 级别的,而无需创建数据库约束。

3.6K20

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

在实际的项目中,数据模型通常通过数据库实现持久化操作,而关系型数据库在过去当下都是持久化的首选方案,下面我们以MySQL为例来说明如何使用关系型数据库来实现持久化操作。...删除 >>> Dept.objects.get(pk=40).delete() (1, {'hrs.Dept': 1}) Django模型最佳实践 正确的为模型关系字段命名。...db_constraint:是否为创建约束,默认值为True。...on_delete:关联的对象被删除时对应的动作,可取的值包括django.db.models中定义的: CASCADE:级联删除。...SET_NULL:把设置为null,当null属性被设置为True时才能这么做。 SET_DEFAULT:把设置为默认值,提供了默认值才能这么做。

2.2K30

Django中ORM操作

=publish_obj) book_obj.save() 多对多 如果两表之间存在双向1对N关系,就无法使用来描述其关系了; 只能使用多对多的方式,新增第三张表关系描述表...books=publish.book_set.all() for book in books: print(book.title) 通过object的形式反向绑定关系...字段就建在子表; 如果B表的1条记录也对应A表中N条记录,两表之间就是双向1对多关系,也称为多对多关系; 在orm中设置如果 A表设置了字段user=models.ForeignKey('UserType...:小写表面 _set().all() 2、通过 value value_list 方式反向跨表:小写表名__字段 小写的表名_set 得到有关系的对象 obj = UserGroup.objects.all...数据查找思路 找到该对象 通过该对象 反向操作 找到第三张关系表 通过第三张关系表 正向操作 找到 该对象有关系对象 总结(只要对象1对象2 中间有关系表建立了关系; 对象1反向操作

4.7K10

Django 模型继承 BaseModel

你只需要决定父类模型是否需要拥有它们的权利(拥有它们的数据表),或者父类作为承载子类中可见的公共信息的载体。 Django 有三种可用的集成风格。...related_query_name 要格外小心 若你在 或 多对多字段 使用了 related_name 或 related_query_name,你必须为该字段提供一个 独一无二 的反向名字查询名字...继承关系介绍了子类父类之间的连接(通过一个自动创建的 OneToOneField )。...在 Django 中,模型字段通常不允许这样做。如果一个抽象模型基类有一个名为 author 的字段,你就不能在继承自该基类的任何类中,创建另一个名为 author 的模型字段或属性。...注解 某些字段在模型内定义了额外的属性,例如 ForeignKey 定义了一个额外的属性 _id 附加在字段名上,类似的还有上的 related_name related_query_name。

2K10

Django之ForeignKeyManyToManyField多表查询

只有在db_constraint=True时Django model才会在数据库上建立约束, 在该值为False时不建立约束. 默认db_constraint=True....如Entry.blog作为Blog的,默认情况下Blog.entry_set是包含所有参照Blog的Entry示例的查询集,可以使用查询集API取出相应的实例。...ManyToManyField.through_fields 上文示例中Membership 有两个键指向Person (person inviter),这使得关联关系含混不清并让Django 不知道使用哪一个...在这种情况下,必须使用through_fields 明确指定Django 应该使用哪些 through_fields 接收一个二元组('field1', 'field2'),其中field1 为指向定义...ManyToManyField 字段的模型的键名称(本例中为group),field2 为指向目标模型的的名称(本例中为person).

1.7K10

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

2.1 ForeignKey 1) on_delete 在 Django 2.0 中,设置时需要添加一个 on_delete选项。本身涉及到两个表的数据,况且在数据库中是有约束行为。...SET_NULL: 置空模式,删除的时候,字段被设置为空,前提就是`blank=True, null=True`,定义该字段的时候,允许为空。...SET_DEFAULT: 置默认值,删除的时候,字段设置为默认值,所以定义的时候注意加上一个默认值。 SET(): 自定义对应的实体的值。...2)limit_choices_to 该参数用于限制所能关联的对象,只能用于 Django 的 ModelForm(Django的表单模块) admin 后台,对其它场合无限制功能。...例如,字段 title 设置了 unique_for_date="pub_date" ,那么Django将不会允许在同一 pub_date 的两条记录的 title 相同。

2K30

Django ORM 多表操作

目录 Django ORM 多表操作 表模型 表关系 创建模型 逆向到表模型 插入数据 ORM 添加数据(添加) 一对多( ForeignKey) 一对一 (OneToOneFeild) 多对多...(ManyToManyField):在第三张关系表中新增数据 ORM 修改数据 ORM 删除清空数据 跨表查询 基于对象的跨表查询 基于双下划线的跨表查询 聚合查询 示例 F查询 Q查询 Django...ORM 多表操作 表模型 图书表 出版社表 作者表 作者详情表 表关系 一对一:一对一推荐建在查询频率高的一方 一对多:字段建在多的一方 多对多:字段建在查询频率多的一方,在Django第三张表不需要创建...,自动创建 ps:字段不需要写表名_id后面的_id,ORM创建的时候自动添加了_id,以及以虚拟字段的形式存在 创建模型 '''models.py''' from django.db import...此时就需要Q函数来帮助我们去构造这些关系:与(&),或(|),(~) 导入: from django.db.models import Q from django.db.models import

1.7K20

Django---ORM操作大全

=publish_obj) book_obj.save() 多对多 如果两表之间存在双向1对N关系,就无法使用来描述其关系了; 只能使用多对多的方式,新增第三张表关系描述表...;在1对多关系中 A表就是主表,B表为子表,ForeignKey字段就建在子表; 如果B表的1条记录也对应A表中N条记录,两表之间就是双向1对多关系,也称为多对多关系; 在orm中设置如果 A表设置了字段...小写的表名 得到有关系的列 #因为使用values取值取得是字典的不是对象,所以需要 小写表名(表)__ v = UserGroup.objects.values('id'...  数据查找思路 1、找到该对象2.通过该对象 反向操作 找到第三张关系表3.通过第三张关系表 正向操作 找到 该对象有关系对象总结(只要对象1对象2 中间有关系表建立了关系; 对象1反向操作 到关系表...=64) sex=((1,'男'),(2,'女')) gender=models.IntegerField(choices=sex) '''把男女表混合在一起,在代码层面控制第三张关系表的关系

6.8K100

Django——图书管理系统(六)

本文将讲述设置操作,关于的更多知识,大家可以看看数据库的知识。当然我依旧会在注释中做出一些解释。 现在我们已经有了出版社这张表,现在我们添加书籍这张表。...由于出版社和书籍之间是有关系的,我们使用来连接两者之间的关系。...在models.py的内容如下: from django.db import models # Create your models here. """ 书出版社之间是有关系的。...例如机械工业出版社出版了《数据结构算法分析——C语言描述》这本书。 那么,我们下面的出版社这张表就需要和书这张表就有一个关系,一个出版社可以出版多本书。...models.PROTECT:保护,如果某个出版社还有书籍存在,那么就不允许删除该出版社。

53640

django 1.8 官方文档翻译:2-1-1 模型语法

中介模型有一些限制: 中介模型必须有且只有一个到源模型(上面例子中的Group),或者你必须使用ManyToManyField.through_fields 显式指定Django 应该使用的。...如果你的模型中存在超个一个的,并且through_fields没有指定,将会触发一个无效的错误。 对目标模型的有相同的限制(上面例子中的 Person)。...对于通过中介模型与自己进行多对多关联的模型,允许存在到同一个模型的两个,但它们将被作为多对多关联关系的两个(不同的)方面。...如果有超过 两个,同样你必须像上面一样指定through_fields,否则将引发一个验证错误。...Changed in Django 1.7: 在Django 1.6 及之前的版本中,中介模型禁止包含多于一个的

4.9K20

Django分组聚合查询实例分享

....publish=publish|publish_id=publish.id) 删: 默认存在级联删除 改: book修改一定存在 多对多: 关系表的获取(book(主键) and author...取字段值 values() 省略默认取所有分组字段聚合字段,也可以自己定义(对非分组或聚合字段,该字段自动被变成分组字段) # 案例:每个出版社出版的最贵的书的价格高于50元的出版社名与最高价格...OneToOneField(): 一对一字段 同 3, ManyToManyField() :多对多关系 to = 关联模型类 through=关联关系类 through_fields关联关系表中...# 断开关联(db_constraint属性)的多对多自动创建关系表 (book() and author) # 断开后依然支持Django ORMlianiao 查询语法 # 当新表中无需新加额外字段时...** # 1、自动建立关系表类似,依然支持Django ORM连表查询语法(多对多借助关系表连表查询) class Book(models.Model): name = models.CharField

1.8K10
领券