假设我们有以下模型:(简化)
class Collection(models.Model):
slug = models.SlugField()
class Brochure(models.Model):
collection = models.ForeignKey(Collection)
class Page(models.Model):
brochures = models.ManyToMany(Brochure)
有没有办法得到这样的小册子词典:
^{pr2}$只有使用多对多管理器:
page_instance.brochures.all()
编辑
我想和佩奇有关的小册子。不是小册子.objects.all()或集合_instance.brooker_集. 所以我把佩奇也包括在内。在
我找到了defaultdict,这有助于我:
collection_brochures = defaultdict(list)
for b in self.brochures.all():
collection_brochures[b.collection.slug].append(b)
实际上这就是我问题的答案。在
我可以这样做,但理想的情况是列出一个包含以下内容的清单:
[{'collection': 'x', 'brochures': [brochure1, brochure2]}, {'collection': 'y', 'brochures': [brochure3, brochure4]}]
我希望这个代码片段能完成这项工作。在
您还可以使用模型实例作为键,因此,如果您希望看到
^{pr2}$Collection
实例而不是它们的slug,您可以将第三行替换为这个:这将为您提供以下数据:
相关问题 更多 >
编程相关推荐