diff options
| author | Malcolm Tredinnick <malcolm.tredinnick@gmail.com> | 2008-08-29 21:24:00 +0000 |
|---|---|---|
| committer | Malcolm Tredinnick <malcolm.tredinnick@gmail.com> | 2008-08-29 21:24:00 +0000 |
| commit | f04123f4dfbbf862e397b6e8c7a96aa5cd39ac1d (patch) | |
| tree | 8cc20e32b74feaf231f5df1cfb83d725053d287c /tests/regressiontests/m2m_regress | |
| parent | ae953a8c4e87172a3dfd37df3f5f6890ce9b00a7 (diff) | |
Fixed #8279 -- Multiple many-to-many relations to "self" are now possible.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@8721 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests/regressiontests/m2m_regress')
| -rw-r--r-- | tests/regressiontests/m2m_regress/__init__.py | 0 | ||||
| -rw-r--r-- | tests/regressiontests/m2m_regress/models.py | 56 |
2 files changed, 56 insertions, 0 deletions
diff --git a/tests/regressiontests/m2m_regress/__init__.py b/tests/regressiontests/m2m_regress/__init__.py new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/tests/regressiontests/m2m_regress/__init__.py diff --git a/tests/regressiontests/m2m_regress/models.py b/tests/regressiontests/m2m_regress/models.py new file mode 100644 index 0000000000..e641d3dadb --- /dev/null +++ b/tests/regressiontests/m2m_regress/models.py @@ -0,0 +1,56 @@ +from django.db import models + +# No related name is needed here, since symmetrical relations are not +# explicitly reversible. +class SelfRefer(models.Model): + name = models.CharField(max_length=10) + references = models.ManyToManyField('self') + related = models.ManyToManyField('self') + + def __unicode__(self): + return self.name + +class Tag(models.Model): + name = models.CharField(max_length=10) + + def __unicode__(self): + return self.name + +# A related_name is required on one of the ManyToManyField entries here because +# they are both addressable as reverse relations from Tag. +class Entry(models.Model): + name = models.CharField(max_length=10) + topics = models.ManyToManyField(Tag) + related = models.ManyToManyField(Tag, related_name="similar") + + def __unicode__(self): + return self.name + +__test__ = {"regressions": """ +# Multiple m2m references to the same model or a different model must be +# distinguished when accessing the relations through an instance attribute. + +>>> s1 = SelfRefer.objects.create(name='s1') +>>> s2 = SelfRefer.objects.create(name='s2') +>>> s3 = SelfRefer.objects.create(name='s3') +>>> s1.references.add(s2) +>>> s1.related.add(s3) + +>>> e1 = Entry.objects.create(name='e1') +>>> t1 = Tag.objects.create(name='t1') +>>> t2 = Tag.objects.create(name='t2') +>>> e1.topics.add(t1) +>>> e1.related.add(t2) + +>>> s1.references.all() +[<SelfRefer: s2>] +>>> s1.related.all() +[<SelfRefer: s3>] + +>>> e1.topics.all() +[<Tag: t1>] +>>> e1.related.all() +[<Tag: t2>] + +""" +} |
