29

プリフェッチされたオブジェクトをフィルタリングする方法はありますか? プリフェッチされたオブジェクトの latest() を取得する必要がありますが、クエリが変更されているため、latest を使用すると prefetch_related が機能しませんか?

ここの例は私が必要とすることを行いますが、もっと簡単な回避策があることを望んでいました...

https://github.com/ionelmc/django-prefetch#example

4

3 に答える 3

24

Django 1.7 では、プリフェッチされたオブジェクトのフィルタリングが可能です。この SO の回答Django のドキュメントを参照してください。

于 2015-01-20T11:06:49.673 に答える
7

これは非常に単純な方法であり、これらのアプリとほとんど比較できませんが、役立つことを願っています。

class Author(models.Model):
    name = models.CharField(max_length=100)

    def latest_book(self):
        return max(self.book_set.all(), key=lambda book: book.created)

authors = Author.objects.prefetch_related('book_set')
authors[0].latest_book() #  what you wanted
于 2012-09-26T20:00:35.940 に答える