我有3个型号:A,B和C.
class A(models.Model):
type = models.SmallIntegerField(
choices=A_TYPE_CHOICES, default=ACCOUNT_TYPE_B
)
class B(models.Model):
a = models.OneToOneField(A, related_name='b', on_delete=models.CASCADE)
class C(models.Model):
a = models.OneToOneField(A, related_name='c', on_delete=models.CASCADE)
我需要什么:
所以,我有:
a_type_b = Account.objects.filter(type=ACCOUNT_TYPE_B)
有没有检查B模型/对象是否已经附加/相关而不是通过所有帐户循环并检查?,因为这可能需要花费大量时间和查询并且效率不高
答案 0 :(得分:1)
您可以按__isnull过滤相关模型的pk
,例如:
A.objects.filter(type=A.ACCOUNT_TYPE_B, b__pk__isnull=True)