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

如何在Django中判断两个物体

时间:2023-03-05 21:35:26 网络应用技术

  简介:今天,首席CTO Note将与您分享如何确定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]的结果和上述方法返回的雕像是相同的。

  可以使用逻辑关系操作员

  例如:

  选择 *来自table_name

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

  或者

  选择 *来自table_name

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

  击中记录

  对于前提,Models.py已经有一个模型。如果存在ID,则可以使用其他更新字段。如果没有存在,将执行添加操作。

  1.Django的objects.get()方法

  OmissionRate.Objects.get(ID = ID)

  通过get获得的录制对象返回。如果结果不存在或有多个结果,则不能输入if语句,然后直接跳到除外

  允许get()参数是多重的,并且需要同时满足之间的关系

  2.Django的对象。Filter()方法:

  obi = omessionrate.objects.filter(id = id)[0]

  通过过滤器返回对象列表,如果结果不存在,它将返回[]

  摘要:GET方法只能获取一个对象,并且过滤器方法可以获取多个对象获取方法,该方法无法获得该对象,而过滤器方法则相反。

  第一个构建学生,分区,课程,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

  结论:以上是首席CTO注释引入的Django中两个对象如何相同的一般内容。我希望这对每个人都会有所帮助。如果您仍然想进一步了解这一点,请记住要收集对该网站的关注。