Changeset 8100
- Timestamp:
- 07/26/08 23:18:52 (4 months ago)
- Files:
-
- django/trunk/AUTHORS (modified) (1 diff)
- django/trunk/django/db/models/query.py (modified) (1 diff)
- django/trunk/tests/regressiontests/queries/models.py (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/trunk/AUTHORS
r8088 r8100 281 281 mrmachine <real.human@mrmachine.net> 282 282 Robin Munn <http://www.geekforgod.com/> 283 James Murty 283 284 msundstr 284 285 Robert Myers <myer0052@gmail.com> django/trunk/django/db/models/query.py
r8098 r8100 837 837 update_query = sql.UpdateQuery(cls, connection) 838 838 for field in cls._meta.fields: 839 if field.rel and field.null and field.rel.to in seen_objs: 839 if (field.rel and field.null and field.rel.to in seen_objs and 840 filter(lambda f: f.column == field.column, 841 field.rel.to._meta.fields)): 840 842 update_query.clear_related(field, pk_list) 841 843 django/trunk/tests/regressiontests/queries/models.py
r8054 r8100 190 190 class Related(models.Model): 191 191 custom = models.ForeignKey(CustomPk) 192 193 # An inter-related setup with a model subclass that has a nullable 194 # path to another model, and a return path from that model. 195 196 class Celebrity(models.Model): 197 name = models.CharField("Name", max_length=20) 198 greatest_fan = models.ForeignKey("Fan", null=True, unique=True) 199 200 class TvChef(Celebrity): 201 pass 202 203 class Fan(models.Model): 204 fan_of = models.ForeignKey(Celebrity) 192 205 193 206 … … 837 850 3 838 851 852 Bug #7778 - Model subclasses could not be deleted if a nullable foreign key 853 relates to a model that relates back. 854 855 >>> num_celebs = Celebrity.objects.count() 856 >>> tvc = TvChef.objects.create(name="Huey") 857 >>> Celebrity.objects.count() == num_celebs + 1 858 True 859 >>> f1 = Fan.objects.create(fan_of=tvc) 860 >>> f2 = Fan.objects.create(fan_of=tvc) 861 >>> tvc.delete() 862 863 # The parent object should have been deleted as well. 864 >>> Celebrity.objects.count() == num_celebs 865 True 866 839 867 """} 840 868
