我的模型如下(floor和board中的字段无关紧要且省略)
class floor(models.Model):
class board(models.Model):
class run(models.Model):
floor = models.ForeignKey(Floor)
boards = models.ManyToManyField(Board)
我有如下疑问:
^{pr2}$返回2个run对象。每次运行都有一系列板。在
runs[0].boards
返回相关板的列表。如果我理解如下:
[run.boards.all() for run in runs]
我得到了这样的列表:
[[1,2,3,4,5], [6,7,8,9,10]]
什么是一个有效和有效的方法将上面的列表转换成下面的列表?在
[1,2,3,4,5,6,7,8,9,10]
我希望一个单线解决方案。使用django查询集的方法可以实现这一点,还是最好使用python来实现?在
我能想到的最简单的方法是:
我将
[...]
列表理解改为生成器理解(...)
。这里可能不重要,但是对于某些应用程序,您可以使用生成器而不是每次构建完整的列表来节省大量内存。在旁白
你可以保持懒惰:
^{pr2}$这些元素是从G()中出来的,展平,一次一个元素,所以您可以遍历它们并对每个元素执行工作,而不必构建一个临时列表。在
尽管这个问题得到了更好的回答,但我无法抗拒我的itertools主张
简单:
相关问题 更多 >
编程相关推荐