簡體   English   中英

Django - 在單個查詢中獲取外鍵對象?

[英]Django - Get Foreign key objects in single query?

我發現django外鍵有點令人困惑,有沒有辦法在下面查看,使用單個查詢?

# Model
class Programme(models.Model):
    name = models.CharField(max_length = 64)

class Actor(models.Model):
    programme = models.ForeignKey(Programme)
    name = models.CharField(max_length = 64)


# View
def list_actors( request, programme_id):
    programme = Programme.objects.filter(id = programme_id)[0]
    actors = Actor.objects.filter(programme = programme_id)
    json = simplejson.dumps( [{
        'name': str(actor.name),
        'rating': str(actor.rating),} for actor in actors] )
    return HttpResponse(json, mimetype='application/javascript')

我想你正在尋找類似的東西:

https://docs.djangoproject.com/en/dev/ref/models/querysets/#select-related

哪個是select_related,你在最終獲得之前放置。 那是你的路線:

actors = Actor.objects.filter(programme = programme_id)

應該是這樣的

actors = Actor.objects.select_related().filter(programme = programme_id)

不幸的是,這里強調: 在單個查詢中獲取外鍵對象 - Django您只能以這種方式檢索actor,因為select_related僅適用於具有ForeignKeys的對象,反之亦然。

您查詢Programme並分配給programme ,但您從不在任何地方使用結果。 只需刪除該行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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