“prefetch_related”只在One-Many关系的一侧工作

时间:2017-03-27 17:48:53

标签: python django

我有两个具有一对多关系的模型(Organization hasMany Locations)

class Organizations(models.Model):
    name = models.CharField(max_length=40)

class Location(models.Model):
    name = models.CharField(max_length=50)
    organization = models.ForeignKey(Organizations, to_field="name", db_column="organization_name", related_name='locations')
    class Meta:
        db_table = u'locations'

现在,在检索“组织”时尝试预取位置时,我收到此错误。

Organizations.objects.prefetch_related('locations')

AttributeError: Cannot find 'locations' on Organizations object, 'locations' is an invalid parameter to prefetch_related()

但是,如果我以相反的方式预加载它可以正常工作。

Location.objects.prefetch_related('organization')

注意:从位置模型预加载组织后,不再发生先前的错误。

我使用的是Django版本:1.8.6

1 个答案:

答案 0 :(得分:1)

似乎这个错误只出现在django shell中。这在django应用程序本身中运行良好