7

Django では、 の呼び出しobject.manytomany.all().reverse()とそれに相当するテンプレートの はobject.manytomany.all.reverse、多対多の関係では機能しないようです。

多対多の関係の結果のリストを元に戻すにはどうすればよいですか?

4

4 に答える 4

5

あなたはこれについて間違っているかもしれませんし、コードスニペットを誤解しているかもしれません。Book のインスタンスが複数の著者を持つことができる Book モデルがあるとします。

class Author(models.Model):
  ...

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

QuerySetこれで、すべての Book インスタンスの a が返されます -Book.objects.all()

objectsモデルのデフォルトのマネージャーで、複数形です。objectは Python 独自のものであり、独自の変数として使用しないことをお勧めします。また、"manytomany" は Django のフィールドや関数ではないことも述べておく価値があります。それがあなたが定義したものかどうか教えてください。ManyToMany の複数の著者を取得するには、本のインスタンスが持つ可能性があります。

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 の形式になったので、リバースを含む通常の QuerySet 操作を行うことができます。

book.authors.all().reverse()

順序付けされていないものを逆にすることはあまり意味がないので、 の使用を検討することをお勧めしますobjects.order_by("<field name>").reverse()。それが役立つことを願っています。

于 2012-02-20T04:26:54.137 に答える