【问题标题】:Django: Get the ManyToMany object of ManyToManyFieldDjango:获取 ManyToManyField 的 ManyToMany 对象
【发布时间】:2021-10-30 16:33:54
【问题描述】:

我知道我可以获取一篇论文的所有作者,例如:

paper.authors.all()

这很好用,但只返回一个作者查询集。

但我想要 ManyToMany 对象(因为我想在 ID 之后排序)

(id (BigAutoField),论文,作者)

那么有没有更快的方法:

Paper.authors.through.objects.all().filter(paper=paper)

因为我的数据库真的很大~2亿个条目,上面的命令是不可行的

我的模型看起来像:

class Paper(models.Model, ILiterature):
    authors = models.ManyToManyField(Author, blank=True)
    (...)

【问题讨论】:

    标签: django database many-to-many manytomanyfield


    【解决方案1】:

    您可以尝试批量选择,

    papers = Paper.authors.through.in_bulk(ids)
    

    Django 批量命令速度更快,专为像您这样的大型数据库而设计。您可以在此处查看https://levelup.gitconnected.com/optimizing-django-queries-28e96ad204de 了解详情。

    【讨论】:

    • 这并没有解决问题:(还是太慢了。
    猜你喜欢
    • 1970-01-01
    • 2021-04-04
    • 1970-01-01
    • 1970-01-01
    • 2020-04-22
    • 2013-06-08
    • 2019-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多