在Django中,调用object.manytomany.all().reverse()
及其模板等效项object.manytomany.all.reverse
似乎不适用于多对多关系。获取objects.all()reverse()或降序
如何反转多对多关系的结果列表?
在Django中,调用object.manytomany.all().reverse()
及其模板等效项object.manytomany.all.reverse
似乎不适用于多对多关系。获取objects.all()reverse()或降序
如何反转多对多关系的结果列表?
您可能正在讨论这个错误,或者我误解了您的代码片段。假设你有一本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()
。希望有所帮助。
而不是 objects.order_by( “ ”).reverse() 可以使用 objects.order_by(“ - ”) 的降序排列。 –
2012-02-20 13:53:47
您可以创建一个方法,以便从模板中轻松调用此查询集。即object.get_m2m_reversed,里面调用self.manytomany.all()。order_by(' - somefield') – ilvar 2012-02-21 02:36:27