django中Model表的反向查詢
阿新 • • 發佈:2019-01-22
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表的反向查詢