回答

1

您可能正在讨论这个错误,或者我误解了您的代码片段。假设你有一本Book Model,其中一本书的实例可以有多个作者。

class Author(models.Model): 
    ... 

class Book(models.Model): 
    authors = models.ManyToManyField(Author) 

现在这将返回所有图书实例的QuerySet - Book.objects.all()

objects是一个模型的默认管理器和它的复数。 object在Python中是它自己的东西,最好不要将它用作你自己的变量。同样值得一提的是,“manytomany”不是Django中的一个字段或函数。让我们知道,如果这是你定义的东西。因此,为了得到多对多多个作者一本书实例可能有:

book = Book.objects.all()[0] 
type(book.authors) # tells you this is a ManyRelatedManager 
type(book.authors.all()) # tells you this is a QuerySet 
book.authors.all() # will print out the authors for this book 

现在,你有作者和这些作者在一个QuerySet的形式,你可以做任何正常查询集操作,包括倒车。

book.authors.all().reverse() 

记住逆转的东西,不排序没有多大的意义,所以你可能要考虑使用objects.order_by("<field name>").reverse()。希望有所帮助。

+0

而不是 objects.order_by( “ ”).reverse() 可以使用 objects.order_by(“ - ”) 的降序排列。 – 2012-02-20 13:53:47

+0

您可以创建一个方法,以便从模板中轻松调用此查询集。即object.get_m2m_reversed,里面调用self.manytomany.all()。order_by(' - somefield') – ilvar 2012-02-21 02:36:27