假设我有两个model
S-
class A(models.Model):
a_id=models.CharField(max_length=255,primary_key=True)
a_name=models.CharField(max_length=255)
class B(models.Model):
a=models.ForeignKey(A)
b_name=models.CharField(max_length=255)
我想筛选属于特定a_id
的B
对象。我可以这样做-
B.objects.filter(a=a_id)
或
B.objects.filter(a__a_id=a_id)
两者在效率、速度或功能方面有什么区别吗?
B.objects.filter(a=a_id)
的效率要高得多,因为它简单地过滤了B.a
的值,并且完全避免了连接表A
,而B.objects.filter(a__a_id=a_id)
需要通过a_id
连接表A
,然后通过a
过滤a_id
。