Django models Django ManyToMany add()是否为追加函数?

Django models Django ManyToMany add()是否为追加函数?,django-models,many-to-many,Django Models,Many To Many,如果my models.py在书籍和作者之间有很多关系,并且如果我执行某个特定样本书: 示例_book.authors.add(author1) 示例_book.authors.add(author2) 示例_book.authors.add(author3) author1、author2和author3是否按添加顺序存储在books.authors.all中 i、 e.ManyToMany add()函数类似于append吗?如果我尝试提取for循环中的值,它们会按照最初添加的顺序返回吗 续

如果my models.py在书籍和作者之间有很多关系,并且如果我执行某个特定样本书: 示例_book.authors.add(author1) 示例_book.authors.add(author2) 示例_book.authors.add(author3)

author1、author2和author3是否按添加顺序存储在books.authors.all中

i、 e.ManyToMany add()函数类似于append吗?如果我尝试提取for循环中的值,它们会按照最初添加的顺序返回吗

续:

下文收到的答复指出,db/django对对象的存储顺序不承担责任


问题是我有一个嵌套排序问题。e、 g.我将书籍列表发送到模板,使用order_by对其进行排序。但是模板需要显示所有书籍,以及每本书的所有作者,并对作者进行排序

因为书籍和作者之间有很多关系,所以每本书的作者不一定按顺序存储(因此我的原始问题)。因此,模板按照传递的顺序显示书籍,我使用Regroups对从每本书中通过关联检索到的作者进行排序


有人有更优雅的解决方案吗?

关系数据库不能保证排序

Django也不能保证,因为它依赖于底层关系数据库

如果需要特定的排序,则必须通过提供某种序列号来实现特定的排序


通常order_by是最简单的,因为它是查询集的一部分。看

最快的方法是创建一个列表,并在查看功能中使用
排序

object_list = sorted( some_query_set, key=lambda o: o.some_field )


这两种方法都非常快。

感谢您的澄清。我在模板中使用重组来实现排序。@Rahul:RegroupTemplate标记不是一个好主意。通常,
order\u by
是最简单的,因为它是查询集的一部分。看见最快的方法是创建一个列表并在view函数中使用
排序
。问题是我有一个嵌套排序问题。e、 g.我将书籍列表发送到模板,使用order_by对其进行排序。但是模板需要显示所有书籍,以及每本书的所有作者,并对作者进行排序。因为书籍和作者之间有很多关系,所以每本书的作者不一定按顺序存储(因此我的原始问题)。因此,模板按照传递的顺序显示书籍,但使用Regroups对通过关联从每本书中检索到的作者进行排序。有什么想法吗?@Rahul:“有什么想法吗?”是的。把这个问题提出来。不是评论。完成。不确定编辑同一个问题或发布一个新问题是否是个好主意(因为从技术上讲,新问题还没有得到回答…),但这似乎是个小问题。期待你有任何解决这个问题的想法。
object_list= list( some_query_set )
object_list.sort( key=lambda o: o.some_field )