[英]Select related - one object from foreign key
models.py:
class Car(models.Model):
pass
class Pictures(models.Model):
car = models.ForeignKey(Car, related_name='pictures')
image = models.ImageField(upload_to = get_file_path, max_length=64,)
因此,一輛車可以有很多照片。 我需要一頁寫關於每輛汽車的信息,並且只寫一張汽車的照片。
views.py:
cars = Car.objects.all().select_related('pictures__image').filter(active=1,).order_by('price').reverse()
但這是行不通的。 我在Car
使用此方法:
@property
def default_picture(self):
try:
return self.pictures.all()[:1][0]
except IndexError:
return None
但是它又向數據庫發出一個請求。 這是一個糟糕的解決方案。
如何處理對數據庫的最小請求?
謝謝!
您無法通過單個查詢來做到這一點。 但是,使用Django的prefetch_related()
您可以將查詢數量減少到兩個:
cars = Car.objects.all().prefetch_related('pictures')
@property
def default_picture(self):
pics = self.pictures.all()
return pics[0] if pics else None
文件在這里: https : //docs.djangoproject.com/en/dev/ref/models/querysets/#django.db.models.query.QuerySet.prefetch_related
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.