在多对一模型中,我只想从管理器中获取一个对象(任何一个对象),怎么办?
models.School.student_set.any_one()
我没有在文档中找到任何此类方法。现在我正在做类似的事情:
models.School.student_set.all()[0]
我认为这是低效的。
最佳答案
在您实际从中获取一些数据之前不会评估 QuerySet,因此对 all()
的结果进行切片实际上会很有效。
参见 docs on QuerySets - “在您执行某些操作来评估查询集之前,实际上不会发生任何数据库事件。”。还有关于 limiting QuerySets 的文档明确提及您的案例。
如果您喜欢冒险,可以通过查看 django.db.connection.queries
( docs ) 自行验证
关于python - django 管理器获取任何一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14548819/