【发布时间】:2013-06-08 18:35:42
【问题描述】:
有一个模型po 和一个名为ManyToManyField 的Order。
我正在考虑一些选项,包括以下解决方案:
po.Orders.all()[0].itemname
但我不确定这个解决方案是否会很昂贵(或不会?)基本上它查询整个表然后过滤掉第一个项目。
第二个解决方案
po.Orders.get(pk=1).itemname
这个看起来更便宜,但不起作用,因为它不可能事先知道pk。
我想知道是否有其他解决方案可以获得与po 对象具有多对多关系的任何项目?
【问题讨论】:
-
您的第一个解决方案非常理想。它对查询执行
LIMIT,因此非常有效 -
我建议使用
.first()。两年前,这不是 Django 的 ORM 的一部分。这应该比您的第一个选项更快,并且在您的第二个选项中做您想做的事情。
标签: django model many-to-many