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

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

外键和表关系 在MySQL中,表有两种引擎,一种是InnoDB,另外一种是myisam。如果使用的是InnoDB引擎,是支持外键约束的。外键的存在使得ORM框架在处理表关系的时候异常的强大。...第一个参数是引用的是哪个模型,第二个参数是在使用外键引用的模型数据被删除了,这个字段该如何处理,比如有CASCADE、SET_NULL等。这里以一个实际案例来说明。...如果一个模型使用了外键。...即只要这条数据引用了外键的那条数据,那么就不能删除外键的那条数据。 3.SET_NULL:设置为空。如果外键的那条数据被删除了,那么在本条数据上就将这个字段设置为空。...如果设置这个选项,前提是要指定这个字段一个默认值。 5.SET():如果外键的那条数据被删除了。那么将会获取SET函数中的值来作为这个外键的值。

4K30

Django 外键引用另一个表中的多个字段

在 Django 中,外键(ForeignKey)通常只引用另一张表的一个字段,比如一个主键或一个唯一标识字段。然而,如果我们需要让一个外键引用另一张表中的多个字段,通常有以下几种方法来实现这种关系。...1、问题背景在 Django 中,模型之间的关系通常使用外键(ForeignKey)来建立。外键允许一个模型中的字段引用另一个模型中的主键。然而,有时我们需要在一个模型中引用另一个模型中的多个字段。...例如,我们有一个 product_models 表,其中包含产品的信息,如产品名称、价格和描述。...以下是如何在 Django 中使用复合主键来实现外键引用另一个表中的多个字段:在 product_models 模型中,添加一个 id 字段作为主键:class product_models(models.Model...在 sales_process 模型中,添加一个 price 字段和一个 commission 字段,并使用 ForeignKey 选项来引用 product_models 表中的 model_price

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

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

    Django中基表的设置 通过图书管理系统引入多表操作:如果我们创建表的方式是先抽象出表与表之间相同的字段建一个父类,然后在用每个表类去继承这个父类,如下面的代码,我们将无法得到期望的表字段。...db_table = 'xxx'指定该类的数据库表单名字。当然如果不指定也没关系,Django会自动默认的按照一定规则生成数据模型对应的数据库表名。...如两张表建立了一对一外键字段,外键在A表,那么先往B表写数据就更合理。...假设图书管理系统中书、出版社、作者、作者详细信息四张表之间的关系如下: """ 表关系 1)Book 和 Publish 一对多:外键在多的一方 Book 2)Book 和 Author 多对多:外键在查询频率高的一方...更合理) """ Django orm中外键字段属性详解 在建表之前我们对外键字段属性进行了解: 1)related_name在外键中设置外键反向查询的字段名:正向找字段名,反向找related_name

    4.3K30

    低代码系列之代码生成器模型配置--fields

    fields是代码生成器最核心的一个属性,它决定了数据表的字段和字段对应的表单属性 fields是一个对象类型,该对象里面的属性就是模型的字段 如 fields: { couponName...tableHidden 否 boolean 字段是否不在表格中显示 值取true表示该字段不会在管理界面的基础表格中展示 meta 否 object 字段的界面属性(表单/表格) 当没指定该属性时默认取...,也就是要单独建表 这个时候你应该先创建分类模型,配置相关属性 然后在文章模型设置外键属性,外键属性foreign与fields同级 外键并没有在本节,这里只做简单介绍 1.设置外键属性 foreign...: { // key 表示外键名称 article_category: { key: 'category_id', // 当前模型的外键字段...的展示 onTable: 'user', // 关联的模型 foreignDesc: '外键描述' }, } 2.配置字段属性 fields

    79020

    Django模型

    外键 外键这个东西,通常都是在业务逻辑层面来实现的,而不是在数据库中实现。但是通常大家学习的数据库课程中,都会有数据库设计范式,其中有个第三范式就是专指的外键约束。在这里只是简单的介绍一下。...下面是另外一个模型,和前面的BookInfo模型通过外键关联起来。...choices参数就是从我们定义的二元组(GENDER_CHOICES)中获取值。二元组的第一个值会储存在数据库中,而第二个值将只会用于在表单中显示。...外键:通过使用models.ForeignKey来设置外键,ForeignKey的第一个参数是要关联的模型类名,第二个参数是on_delete。...,此选项会抛出IntegrityError异常 注意:我们在数据库中,设置外键的时候需要制定另一张表中关联的字段,但是在Django里并没有指定。

    1.9K20

    Django模型最佳实践

    ,默认为False blank 后台模型管理验证数据时,是否允许为NULL,默认为False choices 设定字段的选项,各元组中的第一个值是设置在模型上的值,第二值是人类可读的值 db_column...default 字段的默认值 editable 字段在后台模型管理或ModelForm中是否显示,默认为True error_messages 设定字段抛出异常时的默认消息的字典,其中的键包括null...、blank、invalid、invalid_choice、unique和unique_for_date help_text 表单小组件旁边显示的额外的帮助文本。...unique 设置为True时,表中字段的值必须是唯一的 verbose_name 字段在后台模型管理显示的名称,未指定时使用字段的名称 ForeignKey属性 limit_choices_to:值是一个...on_delete:外键关联的对象被删除时对应的动作,可取的值包括django.db.models中定义的: CASCADE:级联删除。

    2.3K40

    WebGenerate 产品介绍

    模型的扩展主要使用缓存,减少了与数据库的交互次数、以及复杂SQL的使用。 3)专项技术(组件池),主要由用户自行开发,我们也会提供与工程配套的简单的专项技术,如加密、解密等。...“新增字段管理”界面如下图: 图九 名称:用于显示页面元素的title; 编码:生产代码使用; 注释:用于model类 数据类型:字段类型,生产model时,会生产对应的类型; 长度:字段类型的长度;...小数位数:小数位数; 允许空:字段是否允许空; 默认值:字段类型的默认值; 主键:该字段是否为主键; 隶属项目:隶属于哪个项目; 隶属表:隶属于哪个表; 外键表:对应的外键表,用于在controller...中的prop函数进行属性拓展使用; 外键字段:对应的外键表需要显示的字段,用于在controller中的prop函数进行属性拓展使用; 列表显示:是否在列表显示; 表单显示:是否在表单显示; 表单必填:...用于生产的页面元素是否为必填项; 提示显示:页面错误的提示信息; HTML元素:页面显示的HTML元素类型; 排序:字段显示的顺序; 4.工程介绍 WebGenerate生产的代码适用于SSM+Maven

    1.3K70

    pageadmin CMS网站制作教程:实例:如何制作一个报名表?

    ,在数据类型中,我们选择日期,文本输入框长度我们设置为10,然后在基础属性中选择,该字段是否为必填项,如是则勾选,如否则不操作,点击提交,字段就创建好了; 7.3 在创建字段的时候,我们需要注意该字段表单类型的选择...,有些字段的表单类型或者数据类型并不是一样的,如性别,我们可以选择单选框,数据类型则选择文本类型,如民族、电话、地址我们在数据类型选择的时候就可以选择文本类型; 8.字段添加完了,我们这个是报名表,便于查看...9.6 下一步在文件中添加代码,点击顶部导航中的系统,在点击左侧导航中的信息表; 9.7 在信息表中找到新建的信息表,点击表单Html,进入到表单页面, 9.8 使用快捷键ctrl+A(全选),快捷键...,点击报名专栏; 可以看到报名表,但有些显示不完全,这就需要改div和css了 10.5 回到报名模型页面,在后台点击顶部导航的网站,再点击左侧导航的模板管理,再点击views,找到报名专栏,点击新建的模型页中的编辑...,进入到HTML编辑页面, 10.6 因为在前台页面显示的是全页面的表单,为了和其他页面宽度保持一致,我们需要给表单模型增加一个外层,在代码的最顶部加上,代码的最底部加上</div

    2.5K30

    Django 1.10中文文档-第一个应用Part7-自定义管理站点

    现在先来试试重新排序表单上的字段。...在这个表单中,Question字段是一个select选择框,包含了当前数据库中所有的Question实例。Django在admin站点中,自动地将所有的外键关系展示为一个select框。...在我们的例子中,目前只有一个question对象存在。 请注意图中的绿色加号,它连接到Question模型。每一个包含外键关系的对象都会有这个绿色加号。...点击它,会弹出一个新增Question的表单,类似Question自己的添加表单。填入相关信息点击保存后,Django自动将该Question保存在数据库,并作为当前Choice的关联外键对象。...通俗讲就是,新建一个Question并作为当前Choice的外键。 但是,实话说,这种创建方式的效率不怎么样。

    3.6K60

    Django 3.1 官网学习路线

    字段还可以有各种可选参数;在本例中,我们将投票的默认值设置为 0。 最后,请注意使用外键定义了关系。这告诉 Django 每个选择都与一个问题相关。...按照惯例,Django 会将"_id"附加到外键字段名。(是的,你也可以重写这个。) 外键关系是通过外键约束来显式的。...不同的模型字段类型(DateTimeField、CharField)对应于适当的 HTML 输入小部件。每种类型的字段都知道如何在 Django 管理中显示自己。...通常,您需要定制管理表单的外观和工作方式。可以通过在注册对象时告诉 Django 所需的选项来实现。 通过重新排列编辑表单中的字段来了解其工作原理。...“添加选择”表单如下所示: 在该表单中,“Question”字段是一个选择框,包含数据库中的每个问题。Django 知道一个外键应该在管理中表示为一个框。在我们的例子中,目前只存在一个问题。

    8.2K10

    低代码系列之代码生成器模型配置--filter

    键名就是字段名 label:为提示文字 type:为表单类型 分类查询 本地分类查询 本地分类的意思是分类是写死的并没有纳入系统管理 filters: { person: {...外键分类查询 外键分类查询的意思是,分类项并不是写死,分类项是一张单独的表,或者有单独管理作用 这个时候要想正常使用外键分类查询你需要进行如下配置 以goods模型的person字段为例 首先创建一个分类表...article_category: { key: 'person', // 当前模型的外键字段 refer: '...id', // 关联表的字段 // 用作表单,表格的取值 referLabel: 'name', // 关联表用于展示的字段,主要用于 table,form的展示...onTable: 'category', // 关联的模型 foreignDesc: '外键描述' }, } } 日期时间查询 单日期查询 指定日期字段查询

    42620

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

    field值为当前日期时间,所以,即便显示为该字段提供了值,也会自动忽视显示 该field对应的默认表单组件为:TextInput。...删除被参照表的某条表记录,同时级联删除参照表中,同待删除记录存在外键关联关系的记录。 PROTECT 删除被参照表中的某条表记录,如果参照表中,存在与该记录有外键关系的记录,则不让删除。...SET_NULL 删除被参照表的某条表记录,设置参照表中,同待删除记录存在外键关联的记录的外键列值为null。当且仅当设置了null=True选项时可用。...SET_DEFAULT 删除被参照表的某条表记录,设置参照表中,同待删除记录存在外键关联的记录的外键列值为默认值。必须为外键列设置默认值。...SET() 删除被参照表的某条表记录,设置参照表中,同待删除记录存在外键关联关系的记录的外键列值为传递给SET()的参数值,如果传递给SET()的参数值是可调用对象,则设置为调用可调用对象获取的结果。

    2.2K20

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

    而细节用法往往体现在一些差别用法,难以理解的知识点上。 1 复杂的字段类型 经过前面的学习,我们知道模型的字段类型一方面是指定数据库表的列名称和数据类型,另一方面决定 HTML 中的表单标签类型。...1.5 FileField 上传文件字段,常见于表单中。一般而言,文件都是保存在服务器的硬盘中。...2.1 ForeignKey 1) on_delete 在 Django 2.0 中,设置外键时需要添加一个 on_delete选项。外键本身涉及到两个表的数据,况且外键在数据库中是有约束行为。...SET_DEFAULT: 置默认值,删除的时候,外键字段设置为默认值,所以定义外键的时候注意加上一个默认值。 SET(): 自定义对应的实体的值。...4) related_name 用于关联对象反向引用模型的名称。主要用于反向查询,即外键源模型实例通过管理器返回第一个模型的所有实例。

    2K30

    35.Django2.0文档

    该层处理与表现相关的决定: 如何在页面或其他类型文档中进行显示。   V:代表视图(View),即业务逻辑层。 该层包含存取模型及调取恰当模板的相关逻辑。 你可以把它看作模型与模板之间的桥梁。  ...3.设置字段可选  你或许会发现管理工具有个限制:编辑表单需要你填写每一个字段,然而在有些情况下,你想要某些字段是可选的。 举个例子,我们想要Author模块中的email字段成为可选,即允许不填。...首先,我们先自定义字段顺序。 默认地,表单中的字段顺序是与模块中定义是一致的。...filter_horizontal和filter_vertical选项只能用在多对多字段上, 而不能用于ForeignKey字段。 默认地,管理工具使用`` 下拉框`` 来展现`` 外键`` 字段。...解决这个问题的办法是使用`` raw_id_fields`` 选项。它是一个包含外键字段名称的元组,它包含的字段将被展现成`` 文本框`` ,而不再是`` 下拉框`` 。

    11.3K100

    PowerDesigner 的常用方法(转)

    修改外键命名规则 选择Database—>Edit Current DBMS 选择Scripts-》Objects-》Reference-》ConstName 可以发现右侧的Value为: FK...添加外键 Model -> References新建一条外键后,双击进入外键属性,在“Joins”卡片中可以选择子表的外键字段 如何实现Name和code不自动相等 如何实现在CDM中创建Entity...2 如何在PowerDesigner 下建自增列 3 如何在PowerDesigner 下检查设计模型   1 如何在PowerDesigner下建索引   1 双击表设计图,出来Table Properties...使用SqlServer 数据库中的下列语句来完成 建表语句中,在要做为自增列的字段中,加上如下 IDENTITY(1,1) 还有可以使用下面语句,重置自增种子 dbcc checkident(ConfigSys...,reseed,0);   3 如何在PowerDesigner 下检查设计模型   1 在菜单栏中选择 Tools - Check Model, 如下图   2 选择要检查的每项设置   3 确定后

    1.1K30

    37.Django1.11.6文档

    方法允许覆盖外键字段的默认窗体字段。 ...这是必需的。 InlineModelAdmin.fk_name 模型上的外键的名称。 在大多数情况下,这将自动处理,但如果同一父模型有多个外键,则必须显式指定fk_name。...覆盖此方法以编程方式确定最小内联表单数。 例如,这可以基于模型实例(作为关键字参数obj传递)。 使用具有两个或多个外键的模型与同一个父模型 有时可能有多个外键到同一个模型。 ...Django在定义关系(在这种情况下,Group)的模型上显示多对多字段的管理窗口小部件。 ...这是因为,就管理而言,through只是一个具有两个外键字段而不是多对多关系的模型。 在所有其他方面,InlineModelAdmin与任何其他方面完全相同。

    24.4K80

    第一季 | serializers 还有哪些操作没试过

    Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。 ? ?...如何在 serializers 中获取登录用户? 采用上下文 ? ?...在 views 视图中使用 mixins 时,post 请求的 create 方法,patch 请求的 update 方法,都会在对应的 mixins 特定类中执行 serializer.save()。...再来看下第一季都有哪些可以回顾和用得上的小技能 ? 验证 1. Validation自定义验证逻辑 只能验证一个字段 ? 2....ModelSerializer 自动产生基于模型的 fields 自动产生验证器,比如 unique_together 验证器 默认包含 create 和 update 方法,外键被映射为 PrimaryKeyRelatedField

    1.3K20

    后端框架学习-Django

    重写,则按照重写效果显示 注意: 模板继承时,服务器的动态内容无法继承 url反向解析 代码中url的位置: 1.模板 超链接 form表单 form action 将表单中的数据用...verbose_name:设置此字段在admin界面上的显示名称,可以中文化admin界面 好习惯:字段选项【添加或更改】均要执行 模型类-Meta内部类 使用Meta类来给**模型(其实就是表的属性)...创建一对一数据 无外键的模型类,和之前相同 有外键的模型类: wife = Wife.objects.create(name=’王夫人’,author = author1(类属性名称绑实例...)) wife = Wife.objects.create(name=’王夫人’,author_id = 1(类属性字段绑值)) 一对一查询 正向查询:从外键查对象 反向查询:从对象查外键 调用反向属性查询到关联的一方...无外键的模型类,和之前相同 有外键的模型类: 类似上面 wife = Wife.objects.create(name=’王夫人’,author = author1(类属性名称绑实例)

    9.6K40

    ASP.NET MVC5高级编程——(3)MVC模式的模型

    而模型一般有:面向业务的模型对象和面向视图的模型对象。 2 什么是主键属性,什么是外键属性?...首先数据库中主外键的定义: 主键 外键 定义: 唯一标识一条记录,不能有重复的,不允许为空 表的外键是另一表的主键, 外键可以有重复的, 可以是空值 作用: 用来保证数据完整性 用来和其他表建立联系用的...而称ArtistID属性为外键属性(foreign key),因为与模型对应的数据库中,专辑表(Album)和艺术家(Artist)表存在对应的外键关系,即ArtistID是Album表的外键!...简单来说,模型绑定的作用:自动从视图的Form集合提取网页的属性值,比如name属性,然后存储到模型类(如Album)中,也就是说,当模型绑定器读取到Album具有Name属性时候,自动在请求中寻找名为...在ASP.NET MVC中可以通过使用Bind属性限制可被更新的Model属性。如绑定多个字段中的部分字段:通过Bind属性来定义Model中需要绑定哪些字段。

    4.8K40
    领券