考虑这些课程:
class Foo(models.Model):
pass
class Bar(models.Model):
foo = models.ForeignKey(Foo)
class Baz(models.Model):
bar = models.ForeignKey(Bar)
class XXX(models.Model):
field = models.ForeignKey(field_related_to_FOO_somehow)
...
鉴于用户想要删除的实例foo=Foo.objects.get(...)
,我想向他提供他要删除的所有对象的视图。因此,如果用户确认,如何检索将以级联方式删除的Bar
,Baz
和所有其他相关对象XXX
的所有实例?
答案 0 :(得分:0)
foo = Foo.objects.get(id=foo_id)
bar = Bar.objects.filter(foo=foo)
baz = Baz.objects.filter(bar=bar)
baz.delete()
bar.delete()
或只是
foo.delete()
答案 1 :(得分:0)
您可以使用on_delete=models.SET_NULL
删除相关对象时,这将设置为无。