Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
…mmon in self-referential and circular relations. A lot of community debugging went into this fix, so thanks to bmurdock@gmail.com, Marek Kubica, ramiro, Michael Radziej (the last two giving test cases showing the problem) and James Bennett (who did the hard work to actually diagnose the true problem and fix it). git-svn-id: http://code.djangoproject.com/svn/django/trunk@4676 bcc190cf-cafb-0310-a4f2-bffc1f526a37
- Loading branch information
Showing
2 changed files
with
27 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -1,13 +1,34 @@ | |||
from django.db import models | from django.db import models | ||
|
|
||
# If ticket #1578 ever slips back in, these models will not be able to be | |||
# created (the field names being lower-cased versions of their opposite | |||
# classes is important here). | |||
|
|||
class First(models.Model): | class First(models.Model): | ||
second = models.IntegerField() | second = models.IntegerField() | ||
|
|
||
class Second(models.Model): | class Second(models.Model): | ||
first = models.ForeignKey(First, related_name = 'the_first') | first = models.ForeignKey(First, related_name = 'the_first') | ||
|
|
||
# If ticket #1578 ever slips back in, these models will not be able to be | # Protect against repetition of #1839, #2415 and #2536. | ||
# created (the field names being lower-cased versions of their opposite | class Third(models.Model): | ||
# classes is important here). | name = models.CharField(maxlength=20) | ||
third = models.ForeignKey('self', null=True, related_name='child_set') | |||
|
|||
class Parent(models.Model): | |||
name = models.CharField(maxlength=20) | |||
bestchild = models.ForeignKey('Child', null=True, related_name='favored_by') | |||
|
|||
class Child(models.Model): | |||
name = models.CharField(maxlength=20) | |||
parent = models.ForeignKey(Parent) | |||
|
|||
|
|
||
__test__ = {'API_TESTS':""} | __test__ = {'API_TESTS':""" | ||
>>> Third.AddManipulator().save(dict(id='3', name='An example', another=None)) | |||
<Third: Third object> | |||
>>> parent = Parent(name = 'fred') | |||
>>> parent.save() | |||
>>> Child.AddManipulator().save(dict(name='bam-bam', parent=parent.id)) | |||
<Child: Child object> | |||
"""} |