1. 程式人生 > >django中Model表的反向查詢

django中Model表的反向查詢

ted cts ade model first style 別名 如果 fir

很多時候需要在多張表之間進行跨表查詢,這其中外鍵是必須存在的,而通過外鍵所處的表的對象進行跨表查詢,

稱為正向查詢。反之,則是反向查詢。

正向查詢很簡單,這裏不談。

主要談下反向查詢。

class Userinfo(models.Model):
    name = models.CharField(max_length=32)
    password = models.CharField(max_length=64)
    gender = models.CharField(max_length=32)

class U2U(models.Model):
    b = models.ForeignKey(to=
Userinfo,related_name=girls,on_delete=models.CASCADE) #related_name 創建一個別名,使得反向查詢時可以通過這個別名獲取對象,如果沒有設置這個別名,那就要
  g = models.ForeignKey(to=Userinfo,related_name=boys,on_delete=models.CASCADE)

上面簡單的創建了兩個示例表。

通過Userinfo對象獲取U2U的對象,便是反向查詢。以下是簡單的代碼。

boy = models.Userinfo.objects.filter(id=3).first()  #獲取一個id=1的userinfo對象
res 
=boy.girls.all() #通過別名‘girls’去獲取U2U的對象res
如果沒有設置related_name 這個別名,那就要:
res = boy.u2u_set.all()#通過小寫的表格名__set查詢

綜上,一般在設置外鍵字段時設置related_name 屬性,方便於反向查詢操作。

django中Model表的反向查詢