Commit 2bb360c9 authored by Luke Plant's avatar Luke Plant
Browse files

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

[1.2.X] Fixed #15559 - distinct queries introduced by [15607] cause errors 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
parent ec7dd583
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -904,7 +904,7 @@ class ForeignKey(RelatedField, Field):
        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)
+0 −5
Original line number Diff line number Diff line
@@ -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', (
+1 −18
Original line number Diff line number Diff line
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 @@ class DecimalFieldTests(django.test.TestCase):
        # 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 @@ class ForeignKeyTests(django.test.TestCase):
        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"""