在 Django 中,可以使用 select_relatedprefetch_related 方法来实现两张表的联查。

select_related 方法可以在查询时获取外键关联的对象,并将其缓存起来,以避免在后续查询中重复查询。

例如,如果你有一个 Book 模型和一个 Author 模型,它们之间有一个外键关系,你可以这样使用 select_related 方法来联查两个模型:

book = Book.objects.select_related('author').get(id=1)
print(book.author.name)

上面的代码会先查询 Book 模型,并通过外键关系查询出对应的 Author 模型,然后将 Author 模型缓存起来,最后打印出作者的名字。

prefetch_related 方法可以在查询时获取多对多关联的对象,并将其缓存起来,以避免在后续查询中重复查询。

例如,如果你有一个 Book 模型和一个 Genre 模型之间的多对多关系,你可以这样使用 prefetch_related 方法来联查两个模型:

books = Book.objects.prefetch_related('genres').all()
for book in books:
    print(book.title)
    for genre in book.genres.all():
        print(genre.name)

上面的代码会查询所有的 Book 模型,并通过多对多关系查询出对应的 Genre 模型,然后将 Genre 模型缓存起来,最后打印出每本书的题目和分类名称。

Django 联查两张表:select_related 和 prefetch_related 使用指南

原文地址: https://www.cveoy.top/t/topic/lKGS 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录