I have 2 models
class Vhost(models.Model):
dns = models.ForeignKey(DNS)
user = models.ForeignKey(User)
extra = models.TextField()
class ApplicationInstalled(models.Model):
user = models.ForeignKey(User)
added = models.DateTimeField(auto_now_add=True)
app = models.ForeignKey(Application)
ver = models.ForeignKey(ApplicationVersion)
vhost = models.ForeignKey(Vhost)
path = models.CharField(max_length=100, default="/")
def delete(self):
#
# remove the files
#
print "need to remove some files"
super(ApplicationInstalled, self).delete()
If I do the following
>>> vhost = Vhost.objects.get(id=10)
>>> vhost.id
10L
>>> ApplicationInstalled.objects.filter(vhost=vhost)
[<ApplicationInstalled: http://wiki.jy.com/>]
>>> vhost.delete()
>>> ApplicationInstalled.objects.filter(vhost=vhost)
[]
As you can see there is an applicationinstalled object linked to vhost but when I delete the vhost, the applicationinstalled object is gone but the print never gets called.
Any easy way to do this without iterating through the objects in the vhost delete?
Solution
def delete_apps(sender, **kwargs):
obj = kwargs['instance']
print "need to delete apps"
pre_delete.connect(delete_apps, sender=ApplicationInstalled)