Fixed #22998 -- Updated the fast_delete logic for GFKs

This commit is contained in:
Gavin Wahl 2014-07-14 10:42:14 -06:00 committed by Anssi Kääriäinen
parent 28efafa24c
commit 6e2b82fdf6
3 changed files with 41 additions and 4 deletions

View file

@ -4,6 +4,7 @@ from django.contrib.contenttypes.fields import (
from django.contrib.contenttypes.models import ContentType
from django.db import models
from django.utils.encoding import python_2_unicode_compatible
from django.db.models.deletion import ProtectedError
__all__ = ('Link', 'Place', 'Restaurant', 'Person', 'Address',
@ -192,3 +193,26 @@ class D(models.Model):
class Meta:
ordering = ('id',)
# Ticket #22998
class Node(models.Model):
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content = GenericForeignKey('content_type', 'object_id')
class Content(models.Model):
nodes = GenericRelation(Node)
related_obj = models.ForeignKey('Related', on_delete=models.CASCADE)
class Related(models.Model):
pass
def prevent_deletes(sender, instance, **kwargs):
raise ProtectedError("Not allowed to delete.", [instance])
models.signals.pre_delete.connect(prevent_deletes, sender=Node)