簡體   English   中英

選擇相關-外鍵中的一個對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM