Commit f3d07047 authored by Ramiro Morales's avatar Ramiro Morales
Browse files

Fixed #14691 -- Made ForeignKey.validate() use the right database. Thanks...

Fixed #14691 -- Made ForeignKey.validate() use the right database. Thanks Marco Paolini for the report.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@14580 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent ea145923
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -835,7 +835,10 @@ class ForeignKey(RelatedField, Field):
        if value is None:
            return

        qs = self.rel.to._default_manager.filter(**{self.rel.field_name:value})
        using = router.db_for_read(model_instance.__class__, instance=model_instance)
        qs = self.rel.to._default_manager.using(using).filter(
                **{self.rel.field_name: value}
             )
        qs = qs.complex_filter(self.rel.limit_choices_to)
        if not qs.exists():
            raise exceptions.ValidationError(self.error_messages['invalid'] % {
+6 −0
Original line number Diff line number Diff line
@@ -581,6 +581,12 @@ class QueryTestCase(TestCase):
        self.assertEquals(Person.objects.using('other').count(), 0)
        self.assertEquals(Pet.objects.using('other').count(), 0)

    def test_foreign_key_validation(self):
        "ForeignKey.validate() uses the correct database"
        mickey = Person.objects.using('other').create(name="Mickey")
        pluto = Pet.objects.using('other').create(name="Pluto", owner=mickey)
        self.assertEquals(None, pluto.full_clean())

    def test_o2o_separation(self):
        "OneToOne fields are constrained to a single database"
        # Create a user and profile on the default database