一、下划线__和点的区别
- 存在两个表:
biao1:
字段:name = test1
字段:data = data1
biao2:
字段:name = test2
字段:data = data2
外键:b1 = 外键( biao1 ) # 此时数据为biao1中的(test1的整个数据)
- 查询表内字段(点):直接查询biao1数据,A = biao1.object.all()[0] , A.name即可查询出来,
- 跨表查询数据时(__):
当只传入一个test1数据,需要查询biao2中的与biao1的name有关联的数据时:
B = biao2.object.filter(b1__name=‘test1’)
此时查询出来的B就是包含test2的整个数据的QuerySet对象
二、那么一个下划线_又是怎么回事呢?
-
当我们对biao2进行跨表查询的时候:C= biao2.object.all()[0] , 此时我们跨表查询的时候:
C.b1 这时候我们得到的是biao1的一个对象,通过查询:
C.b1.id # 得到结果为 1 (这个1是假设的)
C.b1.name # 得到结果为 test2
C.b1.data # 得到结果为 data2 -
我们还可以通过这样来查询,一个下划线_: