、レコードごとに2つの他のテーブルから最新のエントリを取得:私はこれらの3つのクラスが持つ
class Vehicle(models.Model):
stock_number = models.CharField(max_length=6)
vin = models.CharField(max_length=17)
year = models.ForeignKey(Year)
... (several other fields declared here)
class VehicleMileage(models.Model):
vehicle = models.ForeignKey(Vehicle)
odometer_reading = models.PositiveIntegerField()
date_time_added = models.DateTimeField(default=datetime.today, editable=False)
class VehicleMileage(models.Model):
vehicle = models.ForeignKey(Vehicle)
price = models.PositiveIntegerField()
date_time_added = models.DateTimeField(default=datetime.today, editable=False)
私は何をしたいことはすべて、これは一つにはそれぞれのクラスからの彼らの最新の走行距離と価格ですべての車両を取得しており、クエリ。現在、私は、このように、テンプレートの使用のために辞書項目の中に、私が欲しいものを挿入し、別に3つのすべてを取得しています:
vehicle_list = Vehicle.objects.all().values('vin', 'stock_number', 'year__year')
vehicles = []
for vehicle in vehicle_list:
lst = {}
latest_mileage = VehicleMileage.objects.filter(vehicle__stock_number =
stock_number).values('odometer_reading').order_by(
'-date_time_added')[0]
latest_price = VehiclePrice.objects.filter(vehicle__stock_number =
stock_number).values('price').order_by(
'-date_time_added')[0]
lst['stock_number'] = vehicle['stock_number']
lst['year'] = vehicle['year__year']
lst['vin'] = vehicle['vin']
lst['mileage'] = latest_mileage['odometer_reading']
lst['price'] = latest_price['price']
vehicles.append(lst)
は私が欲しいものを取得し、クエリの最小量を持つことができ、より良い方法がありますランニング?現在、上記のコードでは約100のクエリが必要です。
私はSQLを使ってそれを行う方法を理解しました。誰かがDjango ORMでそれを行う方法を知らない限り、私はこの解決策に固執すると思います。 –