gab*_*bor 6 django many-to-many django-templates django-orm manytomanyfield
在 Django 中,调用object.manytomany.all().reverse()及其等效模板 ,object.manytomany.all.reverse似乎不适用于多对多关系。
如何反转多对多关系的结果列表?
您可能会遇到这个错误,或者我误解了您的代码片段。假设您有一个 Book 模型,其中一个 Book 的实例可以有多个作者。
class Author(models.Model):
...
class Book(models.Model):
authors = models.ManyToManyField(Author)
Run Code Online (Sandbox Code Playgroud)
现在这将返回QuerySet所有 Book 实例中的一个 -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
Run Code Online (Sandbox Code Playgroud)
既然您有了作者并且这些作者都是 QuerySet 的形式,您就可以执行任何正常的 QuerySet 操作,包括反转。
book.authors.all().reverse()
Run Code Online (Sandbox Code Playgroud)
请记住,反转未排序的内容并没有多大意义,因此您可能需要考虑使用objects.order_by("<field name>").reverse(). 希望有帮助。
| 归档时间: |
|
| 查看次数: |
10449 次 |
| 最近记录: |