Py学习  »  Django

Django在M2M上执行查询的有效方法

Arbazz Hussain • 5 年前 • 1798 次点击  
class A(models.Model)
  results = models.TextField()
class B(models.Model)
  name = models.CharField(max_length=20)
  res = models.ManyToManyField(A)
  • 假设我们有两个以上的模型。 A 模型有数百万个对象。

我想知道什么是最有效/最快的方法 results objects 特别的 B 反对。

  • 假设我们必须检索对象号的所有结果 5 属于
Option 1 :  A.objects.filter(b__id=5)

   (OR)

Option 2 : B.objects.get(id=5).res.all()
  • 选项1:我的问题是按id筛选 一个 模型对象需要很多时间?因为有数百万 一个 模型对象。
  • 选项2:问题:是否 res 打开字段 模型存储 id 价值 一个 模型对象?

我之所以选择 2 因为它存储了 一个 建模对象&首先直接获取这些对象值,然后进行第二次查询以获取结果。而在第一个选项中,按id或任何其他字段过滤将占用大量时间

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/52369
 
1798 次点击  
文章 [ 1 ]  |  最新文章 5 年前