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のインスタンスが複数の著者を持つことができる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
を今、あなたは著者を持っており、それらの著者は、クエリセットの形態であることを、あなたは反転を含む任意の通常のクエリセットの操作を行うことができます。
book.authors.all().reverse()
あなたがobjects.order_by("<field name>").reverse()
を使用して検討する必要がありますので、注文されていない何かを逆転することはあまり意味がないことに注意してください。希望が役立ちます。代わりに objects.order_byの
( " ").reverse() あなたが objects.order_byを使用することができます(" - ")降順ため 。 –
テンプレートからこのクエリーセットを簡単に呼び出す方法を作ることができます。私。 object.get_m2m_reversedは、self.manytomany.all()を呼び出します。order_by( ' - somefield') – ilvar