# coding: utf-8 """ Tests for some corner cases with deleting. """ from django.db import models class DefaultRepr(object): def __repr__(self): return u"<%s: %s>" % (self.__class__.__name__, self.__dict__) class A(DefaultRepr, models.Model): pass class B(DefaultRepr, models.Model): a = models.ForeignKey(A) class C(DefaultRepr, models.Model): b = models.ForeignKey(B) class D(DefaultRepr, models.Model): c = models.ForeignKey(C) a = models.ForeignKey(A) # Simplified, we have: # A # B -> A # C -> B # D -> C # D -> A # So, we must delete Ds first of all, then Cs then Bs then As. # However, if we start at As, we might find Bs first (in which # case things will be nice), or find Ds first. # Some mutually dependent models, but nullable class E(DefaultRepr, models.Model): f = models.ForeignKey('F', null=True, related_name='e_rel') class F(DefaultRepr, models.Model): e = models.ForeignKey(E, related_name='f_rel')