简介:今天,首席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注释的所有内容。我希望这对每个人都会有所帮助。如果您想了解有关此信息的更多信息,请记住要收集对该网站的关注。