django选择与多个外键相关的
对于具有多个外键的模型,与select_相关的如何工作?它只是选择第一个吗 类别模型: fkey1,fkey2,fkey3 文档中没有提到这一点,至少在指定方法的地方没有提到django选择与多个外键相关的,django,django-select-related,Django,Django Select Related,对于具有多个外键的模型,与select_相关的如何工作?它只是选择第一个吗 类别模型: fkey1,fkey2,fkey3 文档中没有提到这一点,至少在指定方法的地方没有提到 注:也许我是唯一一个会感到困惑的人。我想select_related只是一个性能提升器(我可以看到),但我错误地认为它是另一个东西。相反,文档对此非常清楚。它表示默认情况下会遵循所有foreignkey,但您可以为该方法提供一个字段列表,它只会遵循这些关系。您可以在链中使用选择相关的,如下所示 Comment.object
注:也许我是唯一一个会感到困惑的人。我想select_related只是一个性能提升器(我可以看到),但我错误地认为它是另一个东西。相反,文档对此非常清楚。它表示默认情况下会遵循所有foreignkey,但您可以为该方法提供一个字段列表,它只会遵循这些关系。您可以在链中使用
选择相关的
,如下所示
Comment.objects.select_related('user').select_related('article').all()
如果您的模型具有多个外键,则可以:
- 调用
,它将“遵循”所有非空外键关系。选择_related()
- 调用
,它将仅“跟随”作为参数提供的外键。选择相关('foreign\u key1'、'foreign\u key2'、…)
如果您的模型与其他模型(即
Book--Author--homerium
)具有“嵌套”外键,您也可以使用select_related
,如下所示:
- 调用
,它将“跟随”作者的外键(在书本模型中)和家乡的外键(在作者模型中)Book。选择相关('author\u homerium')
如果您的模型有多对多或多对一的关系,您希望从数据库中检索,那么您应该看看。hmm,也许我只是在概念上不理解它。然后,它只是“过滤掉”没有外键值的对象?需要澄清的是,
user
和article
都是Comment
上的外键字段。上述内容相当于Comment.objects.select_related('user','article').all()
。(上下文:我正在研究是否可以跨多个关系select_related()
。上面没有这样做。)我将此代码用于django 1.4:related_fields='user,article,user_profile'Comment.objects。select_related(related_fields)但是,它在django 1.9中不起作用,因为django认为这是一个不存在的单一字段。当我将相关的_字段转换为类似于此的列表时,相关的_字段=['user','article','user_uprofile'],它仍然抱怨无法将split(',')应用于列表(显然不是字符串)。这是虫子吗?