我想从模型或表中删除一行,其中我有要删除的行的foreign_key值和第一级表行的值。
例如,我的模型为 A、B、C,其中 B 指的是 A,C 指的是 B。
class A(models.Model):
a = models.CharFeild(max_length=10)
b = models.CharFeild(max_length=10)
c = models.IntegerFeild(default=1)
class B(models.Model):
b_col = models.CharFeild(max_length=10)
a = models.ForeignKey(A, db_index=True)
c_col = models.IntegerFeild(default=1)
class C(models.Model):
c_col = models.CharFeild(max_length=10)
b = models.ForeignKey(B, db_index=True)
d_col = models.IntegerFeild(default=1)
A
id a b c
1 x y 100
2 y z 200
. . . .
B
id b_col a_id c_col
1 q 1 300
2 r 2 400
. . . .
C
id c_col b_id d_col
1 i 1 500
2 j 2 600
. . . .
所以这里我有模型 C 列 d_col 值为 600 和模型 A 列“c”值=200,所以想从模型 C 中删除行,其中 c_col=200。 一种方法是,
a = A.objects.filter(c=200)
b = B.objects.filter(a_id=a.id)
c = C.objects.filter(b_id=b.id).delete()
有没有更好的方法可以在一个查询而不是 3 个查询中完成此操作。
最佳答案
您可以简单地执行以下操作:
C.objects.filter(b__a__c=200).delete()
关于python - Django从第三级外键表中删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53673911/