From 4043521f538c68f17605e37a2ceae1148d7da64a Mon Sep 17 00:00:00 2001 From: Karen Tracey Date: Fri, 29 Jan 2010 18:02:35 +0000 Subject: [PATCH] [1.1.X] Fixed #12721: Ensured objects with generic relations that use non-integer object ID fields can be deleted on PostgreSQL. Thanks much carljm for patch and Russ for review. r12353 from trunk. git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.1.X@12355 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- .../generic_relations_regress/models.py | 19 +++++++++++++++++++ .../generic_relations_regress/tests.py | 12 +++++++++++- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/tests/regressiontests/generic_relations_regress/models.py b/tests/regressiontests/generic_relations_regress/models.py index 8192dc60d3..ab98a6706e 100644 --- a/tests/regressiontests/generic_relations_regress/models.py +++ b/tests/regressiontests/generic_relations_regress/models.py @@ -40,3 +40,22 @@ class Person(models.Model): def __unicode__(self): return self.name + +class CharLink(models.Model): + content_type = models.ForeignKey(ContentType) + object_id = models.CharField(max_length=100) + content_object = generic.GenericForeignKey() + +class TextLink(models.Model): + content_type = models.ForeignKey(ContentType) + object_id = models.TextField() + content_object = generic.GenericForeignKey() + +class OddRelation1(models.Model): + name = models.CharField(max_length=100) + clinks = generic.GenericRelation(CharLink) + +class OddRelation2(models.Model): + name = models.CharField(max_length=100) + tlinks = generic.GenericRelation(TextLink) + diff --git a/tests/regressiontests/generic_relations_regress/tests.py b/tests/regressiontests/generic_relations_regress/tests.py index e1cc85dcdc..6cecf80e77 100644 --- a/tests/regressiontests/generic_relations_regress/tests.py +++ b/tests/regressiontests/generic_relations_regress/tests.py @@ -1,6 +1,6 @@ from django.test import TestCase from django.contrib.contenttypes.models import ContentType -from models import Link, Place, Restaurant, Person, Address +from models import Link, Place, Restaurant, Person, Address, CharLink, TextLink, OddRelation1, OddRelation2 class GenericRelationTests(TestCase): @@ -30,3 +30,13 @@ class GenericRelationTests(TestCase): qs = Person.objects.filter(addresses__zipcode='80433') self.assertEqual(1, qs.count()) self.assertEqual('Chef', qs[0].name) + + def test_charlink_delete(self): + oddrel = OddRelation1.objects.create(name='clink') + cl = CharLink.objects.create(content_object=oddrel) + oddrel.delete() + + def test_textlink_delete(self): + oddrel = OddRelation2.objects.create(name='tlink') + tl = TextLink.objects.create(content_object=oddrel) + oddrel.delete()