ManyToManyFieldを参照するときの注意

ManyToManyFieldを使おうとして少しはまったのでメモ。
例えば、

class MyArchive(models.Model):
    books = models.ManyToManyField(Book)

のようにモデルを書いた場合、

archive = MyArchive.objects.get(pk=1)
archive.books # これだとマネージャ
archive.books.all() # これでarchiveが所有するBookにアクセスできる

となり、ForeignKeyとは異なるので注意する。テンプレートで参照する場合も同じ。
マネージャが返ってくるのは、booksに対してaddやらremoveを行うことがあるためだと思う。