Django-在单个查询中获取外键对象?

2024-04-25 17:34:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我发现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')

Tags: nameidmodelobjectsmodelsactorsfilterlength
2条回答

您查询Programme并分配给programme,但您从不在任何地方使用结果。把那条线去掉。

我想你正在寻找这样的东西:

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

与选择相关的,在最终获取之前放置。 这是你的台词:

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

应该看起来像

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

不幸的是,正如这里强调的那样:get foreign key objects in a single query - Django您将只能以这种方式检索参与者,因为select_related只对具有外键的对象起作用,反之亦然。

相关问题 更多 >