Django_外鍵查詢和反向查詢
Django在數據庫建模的過程中,外鍵查詢和反向查詢方面的內容。
不多說,看例子
from django.db import models class Person(models.Model): name = models.CharField(max_length=64) age = models.IntegerField() tel = models.CharField(max_length=64) class Car(models.Model): owner = models.Foreignkey(Person, related_name='cars') name = models.CharField(max_length=64) price = models.FloatField()
在上面的兩個表中,Person表是主表,Car是字表,Car表外鍵至Person表。
子表查詢主表:
car = Car.objects.get(id=1) # 查詢該車的車主 owner = car.owner
主表查詢子表,即反向查詢:
Tom = Person.objects.get(id=1) # 查詢此人有多少車 # 方式一: # Django默認每個主表對象都有一個外鍵的屬性 # 可以通過它來查詢所有屬於主表的子表信息 # 查詢方式:主表.子表_set() # 返回值為一個queryset對象 Tom.Car_set().all() # 方式二: # 通過在外鍵中設置related_name屬性值既可 Tom.cars.all()
另外,在新的需求突然提出的時候,在不改動原有查詢代碼的情況下,在表模型中添加此裝飾器裝飾過的方法既可。
