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

如何查询Django的多条件查询(Django的ORM查询方法)

时间:2023-03-09 12:32:16 网络应用技术

  简介:许多朋友问有关Django Orms如何查询的问题。本文的首席CTO笔记将为您提供详细的答案,以供所有人参考。我希望这对每个人都会有所帮助!让我们一起看看!

  我没有使用过djongo,但我认为应该几乎相同。这种类型的过滤器或方法返回查询对象,因此应通过过滤器连续使用。

  例如,您写了a = search.objects.filter(xxx),然后要添加另一个条件以继续A.Filter(YY)。

  可以使用逻辑关系操作员

  例如:

  选择 *来自table_name

  其中(条件1和条件2)找到两种情况的结果,

  或者

  选择 *来自table_name

  其中(条件1或条件2)查询结果在两个条件下符合任何条件。

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

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

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

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

  访谈与对象相关的对象:

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

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

  访谈与对象相关的对象:

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

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

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

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

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

  版权属于作者,请以任何形式与作者联系。

  作者:Petanne(来自Douban)

  来源:

  1.多表连接查询:我觉得Django太NX了。

  A类(Models.Model):

  name = models.charfield(u'name')

  B类(Models.Model):

  aa = models.foreignkey(a)

  b.Objects.filter(aa__name__contains ='searchtitle')

  1.5反向查询,构成记录1.5,我觉得Django夫人是NX。

  A类(Models.Model):

  name = models.charfield(u'name')

  B类(Models.Model):

  aa = models.Foreignkey(a,Ressect_name =“ fan”)

  bb = model.charfield(u'name')

  检查答:a.Objects.filter(fan__bb ='xxxx'),都知道相关的_name的作用。,易于使用!交叉剖面

  2.当从QuerySet选择条件时,Filter Said =,排除表示!=。

  querySet.distinct()重复

  __ECACT精确地等于“ AAA”

  __iexact精确地等于忽略下部案例iLike'AAA'

  __Contains包含“%AAA%”之类的

  __icontains包含忽略较低的情况“%aaa%”,但对于sqlite,包含的效果等同于icontains。

  __GT大于

  __ GTE大于等于

  __lt少于

  __lte不等于

  __in存在于列表范围内

  __ startswith从...开始

  __ ISTARTSWITH

  __以。。结束

  __EINDSWITH ...结束,忽略下部案例

  __RANGE在...

  __年约会年度一年

  __月份日期字段的月份

  __日期日期日

  __isnull = true/false

  如果您觉得自己使用自己的ORM来查询。直接获取数据库连接,然后执行SQL语句。

  def my_custom_sql():从django.db导入连接,transaction cursor = connect.cursor()#data修改操作-submit requiend cursor.execute.execute(“ update bar set foo = foo = 1 with with white baz raz])trassaction.commit_unless_managed()操作,无需提交cursor.execute(“从bar where where bar =%s”,[self.baz])行= cursor.fetchone()

  多-DATA

  来自django.db import connectionscursor = connections ['my_db_alias']。光标()#your代码... transaction.commit_unless_managed(use ='my_db_alias')

  通常我们不需要手动致电

  transaction.commit_unless_maned(

  ), 我们做得到:

  baz =%s“,[value])row = cursor.fetchone()return render_to_response('template.html',{'row':row':row})

  QueryBuilder Builder = Dao.QueryBuilder();

  构建器Where()。等式(“字段名称1”,“条件1”)。

  and.eq(“”“字段名称1”);Builder .Query();

  ?如果您识别我的答案,请单击[接受作为满意的答案]按钮

  ~~朋友在手机上询问问题可以评估客户端右上角的点[满意]。

  结论:以上是有关Django的ORM如何由COTO注释为每个人组织的相关内容的摘要,我希望它对您有所帮助!如果您解决您的问题,请与更多关心此的朋友分享问题?