Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

[1.2.X] Fixed #15559 - distinct queries introduced by [15607] cause e…

…rrors with some custom model fields

This patch just reverts [15607] until a more satisfying solution can be
found.

Refs #11707

Backport of [15791] from trunk.

git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.2.X@15792 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit 2bb360c91c42ae7a23ad7330fc13d98a6d9efa5f 1 parent ec7dd58
@spookylukey spookylukey authored
View
2  django/db/models/fields/related.py
@@ -904,7 +904,7 @@ def formfield(self, **kwargs):
db = kwargs.pop('using', None)
defaults = {
'form_class': forms.ModelChoiceField,
- 'queryset': self.rel.to._default_manager.using(db).complex_filter(self.rel.limit_choices_to).distinct(),
+ 'queryset': self.rel.to._default_manager.using(db).complex_filter(self.rel.limit_choices_to),
'to_field_name': self.rel.field_name,
}
defaults.update(kwargs)
View
5 tests/regressiontests/model_fields/models.py
@@ -29,11 +29,6 @@ class Bar(models.Model):
b = models.CharField(max_length=10)
a = models.ForeignKey(Foo, default=get_foo)
-class Baz(models.Model):
- a = models.CharField(max_length=5)
- #Only Foos related to Bars starting with 'a'
- foo = models.ForeignKey(Foo, limit_choices_to=models.Q(bar__b__startswith='a'))
-
class Whiz(models.Model):
CHOICES = (
('Group 1', (
View
19 tests/regressiontests/model_fields/tests.py
@@ -1,14 +1,13 @@
import datetime
import unittest
from decimal import Decimal
-import re
import django.test
from django import forms
from django.db import models
from django.core.exceptions import ValidationError
-from models import Foo, Bar, Baz, Whiz, BigD, BigS, Image, BigInt, Post, NullBooleanModel, BooleanModel
+from models import Foo, Bar, Whiz, BigD, BigS, Image, BigInt, Post, NullBooleanModel, BooleanModel
# If PIL available, do these tests.
if Image:
@@ -95,10 +94,6 @@ def test_lookup_really_big_value(self):
# This should not crash. That counts as a win for our purposes.
Foo.objects.filter(d__gte=100000000000)
-class BazForm(forms.ModelForm):
- class Meta:
- model = Baz
-
class ForeignKeyTests(django.test.TestCase):
def test_callable_default(self):
"""Test the use of a lazy callable for ForeignKey.default"""
@@ -106,18 +101,6 @@ def test_callable_default(self):
b = Bar.objects.create(b="bcd")
self.assertEqual(b.a, a)
- def test_distinct_choice_limit(self):
- """Doesn't make sense to offer the same ForeignKey multiple times in a form"""
- a = Foo.objects.create(a='a', d=Decimal("-1"))
- b = Foo.objects.create(a='b', d=Decimal("1"))
- bar_a = Bar.objects.create(b='ah', a=a)
- bar_b = Bar.objects.create(b='aha', a=a)
- bar_b = Bar.objects.create(b='bla', a=b)
- form = BazForm()
- fk_field = str(form['foo'])
- self.assertEqual(len(re.findall(r'value="%d"' % b.pk, fk_field)), 0)
- self.assertEqual(len(re.findall(r'value="%d"' % a.pk, fk_field)), 1)
-
class DateTimeFieldTests(unittest.TestCase):
def test_datetimefield_to_python_usecs(self):
"""DateTimeField.to_python should support usecs"""
Please sign in to comment.
Something went wrong with that request. Please try again.