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

Django查询集的用途是什么?

时间:2023-03-07 00:50:41 网络应用技术

  简介:今天,首席CTO笔记将与您分享Django查询集查询的相关内容。如果您可以解决您现在面临的问题,请不要忘记注意此网站。让我们现在开始!

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

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

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

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

  访谈与对象相关的对象:

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

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

  访谈与对象相关的对象:

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

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

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

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

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

  在上面的所有示例中,我们构造的过滤器仅将字段值与一定常数进行比较。如果我们想比较两个字段的值,我们该怎么办?

  Django提供了F()来进行此类比较。f()实例可以参考查询中的字段,以比较同一模型实例中两个不同字段的值。

  Django支持F()对象与F()对象和常数之间加法,减法,乘法和成型的操作。

  关键字参数查询(例如Filter()和其他方法是“和”的方法。如果您需要执行更复杂的查询(例如或语句),则可以使用Q对象。

  来自django.db.models导入Q

  Q(标题__startswith ='py')

  Q可以与|结合使用Q对象。操作符号。当操作员在两个Q对象上使用时,它会产生一个新的Q对象。

  查询名称称为水保证金或价格大于100的书

  您可以组合并|括号并使用括号进行分组来编写任何复杂的Q对象。在同一时间,可以使用Q对象?运算符被逆转,从而使组合可以正常查询和抗抗 - (非)查询:

  查询函数可以与Q对象和关键字参数混合。提供给查询函数的所有参数(关键字参数或Q对象)为“和”。但是,如果出现Q对象,则必须在所有关键字参数的前面。例如:

  查询名称,称为水利润,价格大于100

  Django的django.db.models模块提供以下汇总功能。

  警告

  SQLite无法直接处理日期/时间字段的聚合。这是因为SQLite中没有本机/时间字段。Django当前使用文本字段来模拟其函数。politeSqlite中的日期/时间字段将触发NotimplementedError。

  笔记 :

  当QuerySet为空时,聚合物函数将返回无。例如,如果QuerySet中没有记录,则总和聚合物函数将返回无代表,而不是0.Count是一个例外。如果QuerySet为空,它将返回0

  我认为楼上的答案似乎有些问题。您可以验证我是否正确。

  当查询GET时,当您无法查询内容时会引发异常,并且在结果过剩时会抛出异常。因此,不应使用过滤器,但应使用过滤器。

  如果归档器找不到数据,它将返回一个空查询集,[]类型类型为:querySet。

  当您发现额外的一个时,您将返回包含多个对象的查询集。

  所有使用过滤器确定是否存在过滤器。

  userInfo = user.objects.filter(email = request.post ['email'])

  如果useinfo.exists():

  打印(“是的,我们有这封电子邮件”)

  别的:

  打印(“对不起,电子邮件未注册”)

  此外,您还可以使用count()方法。userInfo.count()= 0表示没有数据,如果您大于0,则有一个或多个部分。

  楼上也有答案:如果urinfo:..................................................................

  这个Django采访问题或书面测试问题在哪里?请检查Django开发手册。

  1. QuerySet是查询集,它是传递给服务器上URL的查询内容。Django缓存查询结果集,即提高查询效率。立即向数据库发布查询命令。仅当您需要使用此QuerySet时。

  2.在Django实施的MVC中,对象是m。Django中的模型类别具有对象对象。它是Django中定义的QuerySet类型的对象。它包含模型对象的实例。

  3.不,因为获得可能有异常,您可以使用过滤器功能,如下

  entry.objects.filter(blog__id__exact = 1)#显示__EXACT

  entry.objects.filter(blog__id = 1)#隐藏使用__exact entry.objects.filter(blog__pk = 1)#__pk等于__id __exact

  清单1.您可以尝试使用JavaScript命令的示例使用MongoDB

  var x =“ 0”;

  x === 0;

  类型 ({});

  开始使用MongoDB后,您不必成为JavaScript专家;这里有一些有用的概念:

  您可以使用对象文字语法(对象文字语法)创建对象。

  您可以使用方括号([])创建数组。

  除了数字,布尔值,null和未定义值之外,JavaScript中的所有其他值都是对象。

  如果您想了解有关JavaScript其他特征的更多信息,例如面向原型的编程(OOP),范围规则及其功能编程特征,请参考参考材料。

  MongoDB是一个无模型数据库,与关系数据库完全相反。无霉数据库不使用表单,而是使用文档集合。这些文档是使用对象文字创建的,如列表2所示。

  清单2.文档创建示例

  var person1 = {名称:“约翰·杜伊”,年龄:25};

  var person2 = {name:“ jane doe”,年龄:26,部:115};

  现在,请执行列表3中显示的命令以创建一个新集合。

  列表3.创建一个集合

  DB.Employees.Save(Person1);

  DB.Employees.Save(Person2);

  因为MongoDB具有无模型特征,所以Person1和Person2不必具有相同的列类型,并且它们甚至没有相同的列。并且MongoDB本身具有动态特征,因此它会创建员工而不是抛出错误。可以通过find()方法检索文档。要获取员工中的所有文档,您可以直接调用find()而无需使用任何参数,如列表4所示。

  列表4.一个简单的mongodb查询

  db.employees.find();

  //返回

  

  {“ _id”:{“ $ oid”:“ 4E363C4DCC93747E68055FA1”},

  “名称”:“ John Doe”,“年龄”:25},

  {“ _id”:{“ $ oid”:“ 4E363C53CC93747E68055FA2”},

  “名称”:“ Jane Doe”,“ Depth”:115,“年龄”:26}

  这是给予的

  请注意,_id等同于主键。要运行特定的查询,您需要将键/值向其他对象使用,以指示要查询的内容,如列表5所示。

  清单5.通过搜索参数查询

  db.employees.find({名称:“ John Doe”});

  //返回

  

  {“ _id”:{“ $ oid”:“ 4E363C4DCC93747E68055FA1”},

  “名称”:“ John Doe”,“年龄”:25}

  这是给予的

  要查询25岁以上的员工,请在列表6中执行命令。

  列表6.与25岁以上的查询员工

  db.employees.find({age:{'$ gt':25}});

  //返回

  

  {“ _id”:{“ $ oid”:“ 4E363C53CC93747E68055FA2”},

  “名称”:“ Jane Doe”,“ Depth”:115,“年龄”:26}

  这是给予的

  $ GT是一个特殊操作员,这意味着大于1列出其他修饰符。

  表1.可用于MongoDB的道德特征

  装饰

  描述

  $ GT大于

  $ LT小于

  $ GTE大于或等于

  $ LTE小于或等于或等于或等于

  $检查是否存在数组,类似于“ in” SQL运算符。

  当然,您还可以使用update()方法来更新记录。您可以更新整个记录,如列表7所示。

  列表7.更新整个记录

  db.employees.update({

  名称:“ John Doe”,//要更新的文档

  {名称:“ John Doe”,年龄:27} //更新的文档

  });

  此外,您可以使用$ SET运算符仅更新一个值,如列表8所示。

  列表8.记录中只有一个值

  db.employees.update({名称:“ John Doe”,

  {'$ set':{年龄:27}}

  });

  要清除集合,您可以在没有任何参数的情况下调用remove()方法。例如,如果要从员工集合中删除John Doe,则可以执行清单9中显示的操作。

  清单9.从员工收藏中删除John Doe

  db.employees.remove({“名称”:“ John Doe”});

  db.employees.find();

  //返回

  

  {“ _id”:{“ $ oid”:“ 4E363C53CC93747E68055FA2“}”},“ name”:“ Jane Doe”,

  “部门”:115,“年龄”:26}

  这是给予的

  对于刚刚开始使用MongoDB的您,您可以继续浏览官方网站。该网站提供了一个简单的基于网络的交互式MongoDB命令提示,以及指南和官方文档。请参考参考信息。

  背面

  集成的Django和MongoDB

  从Python或Django访问MongoDB有几种选项。第一个选择是使用Python模块,即Pymongo.List 10是一个简单的Pymongo会话。假设您已经安装了MongoDB,并且已经在端口上运行了一个实例。

  列表10.样品pymongo会话

  来自Pymongo进口连接

  databasename =“ sample_database”

  连接=连接()

  DB =连接[Databasename]

  员工= DB ['员工']

  Person1 = {“名称”:“ John Doe”,

  “年龄”:25,“ dept”:101,“语言”:[“英语”,“德语”,“日语”]}

  Person2 = {“名称”:“ Jane Doe”,

  “年龄”:27,“语言”:[“英语”,“西班牙语”,“法语”]}

  打印“清算”

  员工.remove()

  打印“保存”

  员工。Save(person1)

  员工。Save(person2)

  打印“搜索”

  for e in雇员。find():

  打印e [“名称”] +“ + unicode(e [“语言”))

  Pymongo允许您同时运行多个数据库。要定义连接,只需将数据库名称传递给连接实例。在此示例中,Python dictionary替换JavaScript Object Noodles NOODLES创建新文档定义,而Python列表替换了JavaScript数组。查找方法返回一个数据库目标,您可以迭代。

  语法的简单性使MongoDB命令行和包含Pymongo的跑步命令之间的切换。例如,列表11显示了如何使用Pymongo运行查询。

  列表11.与Pymongo一起运行查询

  for e in雇员。find({“ name”:“ John Doe”}):

  打印e

  您打电话给Python的MongoDB的另一个选择是Mongongine。如果您使用了django的构建-in -inm,那么您应该非常熟悉此。Mongongine是一张文档的地图到一个对象,该映射类似于从概念上映射到Orm的映射器的地图。清单12显示了一个词典的例子。

  列表12.蒙古示例会议

  来自蒙古的进口 *

  连接('homployeedB')

  班级员工(文档):

  name = stringfield(max_length = 50)

  年龄= int字段(必需= false)

  John =员工(名称=“ John Doe”,年龄= 25)

  John.Save()

  Jane =员工(名称=“ Jane Doe”,年龄= 27)

  jane.save()

  for e employee.objects.all():

  打印e [id“],e [“ name”],e [“ age”]

  员工对象继承了词古纳.document.在此示例中,使用了两种字段类型:stringfield和intfield。类似于django的ORM,您需要通过查询获得集合中的所有文档,请致电emblayee.objects.all(all)。)。请注意,如果要访问唯一的对象ID,请使用“ ID”而不是“ _id”。

  背面

  示例博客

  现在创建一个名为blongo的简单博客。和Firefox。加载了网页后,Blongo将显示所有博客条目输入,并允许任何条目的更新和删除操作。换句话说,允许所有标准的CRUD操作。Django视图具有三种方法:索引,更新和删除。

  样式表(CSS)的层定义了一个单独的静态文件。我不想在此处重复。您可以随意浏览下载部分中包含的源代码。

  假设已经安装了所有已安装的工具并且这些组件可以运行良好,则请创建一个新的Django项目和必要的组件,如列表13所示。

  列表13.创建Django博客项目的命令

  $ django- addmin.py startproject blongo

  $ CD Blongo

  $ django- admin.py startapp blogapp

  $ MKDIR模板

  $ cd blogapp

  $ mkdir静态

  Django 1.3的新内容是Django中包含的贡献应用程序,可用于改进静态文件的处理。添加到任何应用程序目录的静态目录(例如,在本示例中为Blogapp)并确保Django.contrib.staticfiles包含在已安装的应用程序中。django可以找到静态文件,例如.css和.js,而无需任何其他方法。清单14显示了设置文件的代码行。这些代码线已被相应地修改(从默认设置.py文件),以使博客应用程序正常运行。

  结论:以上是有关Django查询集查询的主要CTO注释的所有内容。我希望这对每个人都会有所帮助。如果您想了解有关此信息的更多信息,请记住要收集对该网站的关注。