我是Django开发者,我遇到了反向外键查找的问题。问题描述如下:
我正在进行查询优化。我有一个模型MicroMessage
,其User
(来自django.contrib.auth.models
)的外键为author
。还有一些其他类也有User
的外键(例如UserProfile
)。
我需要一个查询来获取MicroMessage
的作者以及与任何其他模型相关的所有用户,我可以从中访问该作者的UserProfile
信息而不会有任何过多的查询。我试过这个:
MicroMessage.objects.select_reverse({'authors':'author_set'})
请帮助我。提前谢谢。
答案 0 :(得分:2)
您正在寻找select_related https://docs.djangoproject.com/en/dev/ref/models/querysets/#select-related
messages = MicroMessage.objects.select_related('author', 'author__userprofile')
第二个字段(用户的个人资料)是反向外键,但如果实现为文档建议的OneToOneField
,则可以按照上面显示的方式查询该类是否为UserProfile
。