当前位置: 首页 > 网络应用技术

如何在不使用外部密钥的情况下关联Django

时间:2023-03-07 19:02:14 网络应用技术

  指南:本文的首席执行官注释将介绍Django如何不使用外部密钥的相关内容。我希望这对每个人都会有所帮助。让我们来看看。

  本文目录清单:

  1. Django 2.0外部密钥处理2. Django是否可以建立相关关系?我可以执行关联的查询3.有关Django数据库的设计,如何显示和过滤Django数据库管理页面的其他表字段。键和一个-on -One on_delete参数

  在django2.0之后,定义外键和一个 - 到一个关系时,您需要添加on_delete选项。为了避免两个表中数据不一致的问题,将报告错误:

  TypeError:__init __()缺少1所需的位置参数:'on_delete'

  例如:

  user = models.onetoonefield(用户)

  所有者=型号。

  需要更改为:

  user = models.onetoonefield(用户,on_delete = models.cascade) - 旧版本(models.cascade)是默认值

  所有者= models.foreignkey(userProfile,on_delete = models.cascade)-thisyeeels.cascade in Old版本是默认值

  参数描述:

  on_delete有五个可选值:cascade,protect,set_null,set_default,set()

  级联:此值设置是关节删除。

  保护:此值设置将报告完整性错误。

  set_null:此值设置将把外部键设置为null,但前提是允许将其作为null。

  set_default:此值设置将设置外部键的默认值。

  set():此值设置,外部值称为一个函数。

  在正常情况下,使用级联。

  以下是官方文档描述:

  外国基金会接受其他论点,这些论点定义了相对工作方式的默认值。

  foreferkey.on_delete?

  

  user = models.foreignkey(user,models.set_null,空白= true,null = true,)

  自版本1.9:ON_DELETE的弃用将成为Django 2.0中所需的参数。在较旧的版本中,它默认了Tocascade。

  在django.db.models中找到了on_delete的帖子值:

  级联[来源]?

  级联删除。Django模拟SQL约束在删除级联反应上的行为,并删除包含外键的对象。

  保护[来源]?

  通过提高django.db.db.integrityerror的子类的保护来防止删除引用对象。

  set_null [源]?

  设置外国钥匙空;如果null isstrue,这是公开的。

  set_default [源]?

  将外国人设置为我的默认值;必须设置外国键的默认值。

  set()[源]?

  

  set(get_sentinel_user)),),),),)

  do_nothing [来源]?

  不采取行动。如果您的数据库返回执行引用参考完整性,则除非您手动向数据库添加sqlondeconstraint,否则这将导致IntegragrityError

  foreferkey.limit_choices_to?

  可以使用对象。

  对于Exmple:

  Staff_member = models.Foreignkey(用户,on_delete = models.cascade,limit_choices_to = {'is_staff':true},),)

  导致在themodelformto上提交的相应列表list hasthat hastis_staff = true。这可能对Django管理员有帮助。

  例如,与pythondateModule连接以限制按日期prime的选择时,呼叫表单可能会有所帮助。

  defLimit_pub_date_choices():return {'pub_date__lte':dateTime.date.utcnow()} limit_to = limit_date_choices_choices_choices

  

  笔记

  边缘案件多次,因此您的呼叫可能会宣传几次。

  关联数据库不能依靠关系来进行关联的查询。如何在不建立关系的情况下进行连接?

  推荐Django学习网站Django高级教程

  数据库设计是整个设计中最基本的部分

  1. Django应用程序设计:根据系统的分析,设计Django的应用程序。Django的开发是基于应用程序开发的,因此第一步是设计应用程序。

  2.每个应用程序模型的设计:即设计的相应数据表

  3.数据表的生成和修改

  以在线教育系统为例:

  USERPROFILE设计:在任何系统中,用户表是第一个设计的,Django将生成几个默认用户数据表

  在设计自己的用户表时,我们希望生成自己的桌子,并希望继承Django的默认表。目前,我们可以继承Abstractuser(

  来自django.contrib.auth.models import Abstractuser

  )

  班级用户(摘要使用者):

  经过

  定义用户填充表后,我们需要在sett.py文件中注册用户应用程序,installed_apps = [

  “用户”,

  这是给予的

  并定义方法auth_user_model =“ user.userprofile”,请注意,这是使用users.userprofile而不是用户。model.model.userprofile

  (1)用户模型的设计:

  当我们设计Django应用程序时,每个应用程序都有模型,并且模型文件中的模型文件可能会在其他应用程序中使用该模型。这将很容易引入周期参考的问题。一种方法是使用分层模型方法,即,下一层可以引用下一层

  模型,如下:

  注意:PEP8的规格是在第一个区域引入Python自己的袋子的区域,然后另一行的第二个区域是第三方袋,例如Django,然后是Line Issome型号的第三个区域

  (2)课程模型的写作:一个数据可能是与另一个数据的一对关系,但是一个表无法存储此关系,因此您需要将这两个数据存储在不同的数据表中,将引入外部键之间的关系。

  Model的FileFiield,定义此字段以生成按钮以在背景系统中上传文件

  (3)撰写组织模型:

  (4)操作模型写作:

  所有应用程序写入完成后,我们可以构建Python应用程序包,将所有应用程序放入此应用程序中,然后将所有应用程序放入应用程序。我们会发现对每个应用程序的模型的引用可能会出现一条红线,表明我们将向我们展示,表明我们可以向我们展示。找不到这些参考包,因此我们需要在设置中。文件

  将应用程序添加到Python的搜索目录中,

  导入sysys.path.insert(0,os.path.join(base_dir,'apps'))

  表的外部键与主表或唯一约束的主要密钥约束相关联,不一定是主密钥约束

  第一个构建学生,分区,课程,stu_info表

  添加一对多表的关系数据:

  1.第一种方法是将其添加为上一个方法。应该注意的是,外键的值必须是关联表中存在的存在。

  2.第二种方法是属性分配的方法,因为我们具有模型类中部门的属性,并且该属性的对象的类型必须是部门表类型的实例对象

  访谈与对象相关的对象:

  我们具有定义学生类别类别的部门的属性,因此,当我们访问它时,我们可以直接找到可以通过Student.Deppartment的形式直接找到学生附属学院的大学。

  那么,如果您拜访访问一所大学的学生时我们也想改变呢?

  访谈与对象相关的对象:

  您可以在定义期间设置相关的_name参数,以涵盖foo_set的名称。

  clear()将所有对象集中在关联对象

  多桌查询----交叉关系查询:

  Django提供了一种强大而直观的方式来“处理”查询中相关关系。它会自动帮助您处理后台加入。如果您想跨越关系,则只需要使用关联的模型字段的名称并使用双重字段的行进行分开,直到您想要的字段:

  它也可以反向起作用。要引用“反向”关系,您只需要使用模型的小写字母的名称即可。

  结论:以上是Django如何使用外部钥匙如何将外部密钥与主要CTO注释相关联的相关内容。希望它对您有所帮助!如果您解决了问题,请与更多关心此问题的朋友分享?