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

Django查询集返回列表中的过滤器是什么(2023年最新共享)

时间:2023-03-08 02:06:52 网络应用技术

  简介:许多朋友询问了有关Django查询集过滤器的相关问题。本文的首席执行官注释将为您提供详细的答案,以供您参考。我希望这对每个人都会有所帮助!让我们一起看看!

  实际上,前端构造过程通常基于前后的分离。如果您想使自己的施工过程清晰,简单和方便,请首先在项目之前和之后将您的项目分开。完成,给您一些建议。

  Django模型通常使用Django的GET和过滤器方法。重要的是要找出两者之间的区别。

  为了说明两者之间的差异,定义了2个模型

  班级学生(Models.Model):

  name = models.chafield('name',max_length = 20,默认='')

  age = models.charfield('age',max_length = 20,默认='')

  课程(Models.Model):

  学生=型号。

  1.让我们先谈谈django的获取方法:

  1django的GET方法是从数据库中获得匹配结果并返回对象。如果记录不存在,它将报告错误。

  例如,如果我的数据库中有记录,则记录的值为“ python”,我使用student = statent.objects.get。

  它返回记录对象。您可以通过学生查看。__dict__。它返回字典表格。

  而且,如果我使用GET方法检查数据库中不存在的记录,则该程序将报告错误。

  例如:student = student.objects.gets.get(name ='pharaoh'),您可以自己运行。

  2如果您使用django获取相关表的数据,并且如果密钥表的数据中有2个以上的数据,将会报告错误。

  例如,我的学生表中有一个记录:

  ID名称年龄

  1 Python 24

  书籍表:

  id student_id

  1 1

  21

  我用

  student = student.objects.get(name ='python')

  book = book.objects.get(学生)

  它还报告了一个错误,因为书籍表有2个记录和学生表。

  2.让我们谈谈Django过滤器:

  1Django滤波器方法是匹配数据库的结果,并返回对象列表。如果记录不存在,它将返回[]。

  例如,我的数据库中有一个记录。如果记录的价值为Python,我使用student = student.objects.filter(name ='python'))))))))

  返回的学生是对象的列表。可以看出,学生[0]的结果和上述方法返回的雕像是相同的。

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

  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

  将list_filter中的外键字段更改为forefer_key___er_fieldname。此用法适用于外国基金会和Manytomanyfield。

  首先比较两个功能文档的解释。

  得到

  返回与给定查找参数匹配的对象,该对象应以字段查找中描述的格式。

  get()如果发现的对象还要多,则会升级多个对象。Mutt处是注射化是模型类的属性。

  如果对象不是给定参数,则get()提出了doteist异常。此例外也是模型类的属性

  筛选

  返回一个新的QuerySet包含与给定查找参数不匹配的对象。

  

  输入参数

  GET的参数只能是模型中定义的那些字段,仅支持严格匹配

  过滤器的参数可以是一个字段,也可以是查询关键字(例如,喜欢)的扩展名。

  返回值

  获取返回值是模型对象的定义

  过滤器返回值是一个新的QuerySet对象,然后您可以查询QuerySet以返回新的QuerySet对象以支持链操作

  querySet可以迭代或穿越,切成薄片等的收集对象,但不等于列表类型(必须注意使用)

  异常

  只有在Get有一个记录返回时,这意味着GET的查询字段必须是主要键或唯一受限字段。返回多个记录或未找到记录时,它将引发异常

  过滤器有记录是否匹配

  稍后将省略截断,这通常会被太长的文本省略。

  切片是一个列表,实际上是数据拦截。它通常用于数据操作。当然,没有...

  具体而言,省略了您的截断词,并且字符串之间的差距非常大。

  结论:以上是首席CTO注释的Django查询集的过滤器的全部内容。我希望这对每个人都会有所帮助。如果您想进一步了解这一点,请记住收集并遵循这本书。