【发布时间】:2011-03-29 04:13:00
【问题描述】:
如果我的 models.py 在书籍和作者之间具有 ManyToMany 关系,并且对于特定的 SampleBook 我执行: Sample_book.authors.add(author1) Sample_book.authors.add(author2) Sample_book.authors.add(author3)
author1、author2 和 author3 是否按添加顺序存储在 books.authors.all 中?
即ManyToMany add() 函数是否类似于追加?如果我尝试在 for 循环中提取值,它们会按照最初添加的顺序返回吗?
续:
下面收到的回答说db/django不对对象的存储顺序负责。
问题是我有一个嵌套排序问题。例如我将书籍列表发送到模板,使用 order_by 对其进行排序。但是模板需要显示所有书籍,以及每本书的所有作者,作者也进行了排序。
由于书籍和作者之间存在多对多关系,因此每本书的作者不一定按顺序存储(因此是我最初的问题)。因此,模板按传递的顺序显示书籍,我使用 regroup 作为 hack,对从每本书中检索到的作者进行排序。
有人有更优雅的解决方案吗?
【问题讨论】:
标签: django-models many-to-many