假设我有两个model
-
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)
我想过滤属于特定B
的{{1}}个对象。我可以做到这一点-
a_id
或
B.objects.filter(a=a_id)
两者在效率,速度或功能上是否有区别?
答案 0 :(得分:1)
B.objects.filter(a=a_id)
的效率更高,因为它仅过滤B.a
的值并避免完全连接表A
,而B.objects.filter(a__a_id=a_id)
要求通过以下方式连接表A
a_id
,然后用a_id
过滤a
。