1. 程式人生 > >django model 的正向查詢和反向查詢理解

django model 的正向查詢和反向查詢理解

一下是幾個 model 建模  

from django.db import models

    class Person(models.Model):         name = models.CharField(max_length=64)         age = models.IntegerField()         tel = models.CharField(max_length=64)

        @property         def all_cars(self):             return cars.all()

        @property         def info(self):             # return the name and tel of person             return '%s %s' % (self.name, self.tel)

    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.object.get(id=1)

          owner = car.owner  #查詢該車車主

主表查詢子表為反向查詢

tom = Person.object.get(id=1)

#查詢此人有多少車

#方式一   Django 預設每個主表的物件都有一個外來鍵的屬性

#可以通過它查詢所有屬於主表的子表資訊

# 查詢方式:主表.子表_set() # 返回值為一個queryset物件

Tom.Car_set().all()

# 方式二: # 通過在外來鍵中設定related_name屬性值既可 Tom.cars.all()

# 方式三: # 通過@property裝飾器在model中預定義方法實現 Tom.all_cars