From 158691e884d39ba433816c0cf810d68e8d9d4318 Mon Sep 17 00:00:00 2001 From: Luke Plant Date: Wed, 5 Apr 2006 11:46:30 +0000 Subject: [PATCH] magic-removal: Added tests for bug #1535 (currently failing) git-svn-id: http://code.djangoproject.com/svn/django/branches/magic-removal@2612 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- tests/modeltests/m2m_and_m2o/__init__.py | 0 tests/modeltests/m2m_and_m2o/models.py | 66 ++++++++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 tests/modeltests/m2m_and_m2o/__init__.py create mode 100644 tests/modeltests/m2m_and_m2o/models.py diff --git a/tests/modeltests/m2m_and_m2o/__init__.py b/tests/modeltests/m2m_and_m2o/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/modeltests/m2m_and_m2o/models.py b/tests/modeltests/m2m_and_m2o/models.py new file mode 100644 index 0000000000..29631e5779 --- /dev/null +++ b/tests/modeltests/m2m_and_m2o/models.py @@ -0,0 +1,66 @@ +""" +27. Many-to-many and many-to-one relationships to the same table. + +This is a response to bug #1535 + +""" + +from django.db import models + +class User(models.Model): + username = models.CharField(maxlength=20) + +class Issue(models.Model): + num = models.IntegerField() + cc = models.ManyToManyField(User, blank=True, related_name='test_issue_cc') + client = models.ForeignKey(User, related_name='test_issue_client') + def __repr__(self): + return "" % (self.num,) + + class Meta: + ordering = ('num',) + + +API_TESTS = """ +>>> Issue.objects.all() +[] +>>> r = User(username='russell') +>>> r.save() +>>> g = User(username='gustav') +>>> g.save() +>>> i = Issue(num=1) +>>> i.client = r +>>> i.validate() +{} +>>> i.save() +>>> i2 = Issue(num=2) +>>> i2.client = r +>>> i2.validate() +{} +>>> i2.save() +>>> i2.cc.add(r) +>>> i3 = Issue(num=3) +>>> i3.client = g +>>> i3.validate() +{} +>>> i3.save() +>>> i3.cc.add(r) +>>> from django.db.models.query import Q +>>> Issue.objects.filter(client=r.id) +[, ] +>>> Issue.objects.filter(client=g.id) +[] +>>> Issue.objects.filter(cc__id__exact=g.id) +[] +>>> Issue.objects.filter(cc__id__exact=r.id) +[, ] + +# Queries that combine results from the m2m and the m2o relationship. +# 3 ways of saying the same thing: +>>> Issue.objects.filter(Q(cc__id__exact=r.id) | Q(client=r.id)) +[, , ] +>>> Issue.objects.filter(cc__id__exact=r.id) | Issue.objects.filter(client=r.id) +[, , ] +>>> Issue.objects.filter(Q(client=r.id) | Q(cc__id__exact=r.id)) +[, , ] +"""