简介:今天,首席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中两个对象如何相同的一般内容。我希望这对每个人都会有所帮助。如果您仍然想进一步了解这一点,请记住要收集对该网站的关注。