Commit 92476e88 authored by Anssi Kääriäinen's avatar Anssi Kääriäinen
Browse files

Fixed ._meta.pk_index() virtual field failure

parent dab52d99
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -204,9 +204,10 @@ class Options(object):

    def pk_index(self):
        """
        Returns the index of the primary key field in the self.fields list.
        Returns the index of the primary key field in the self.concrete_fields
        list.
        """
        return self.fields.index(self.pk)
        return self.concrete_fields.index(self.pk)

    def setup_proxy(self, target):
        """
+3 −0
Original line number Diff line number Diff line
@@ -140,6 +140,9 @@ class Article(models.Model):
        except ArticleTranslation.DoesNotExist:
            return '[No translation found]'

class NewsArticle(Article):
    pass

class ArticleTranslation(models.Model):
    article = models.ForeignKey(Article)
    lang = models.CharField(max_length='2')
+17 −1
Original line number Diff line number Diff line
import datetime
from operator import attrgetter

from .models import Country, Person, Group, Membership, Friendship, Article, ArticleTranslation, ArticleTag, ArticleIdea
from .models import (
    Country, Person, Group, Membership, Friendship, Article,
    ArticleTranslation, ArticleTag, ArticleIdea, NewsArticle)
from django.test import TestCase
from django.utils.translation import activate
from django.core.exceptions import FieldError
@@ -339,6 +341,20 @@ class MultiColumnFKTests(TestCase):
        with self.assertRaises(FieldError):
            Article.objects.filter(ideas__name="idea1")

    def test_inheritance(self):
        activate("fi")
        na = NewsArticle.objects.create(pub_date=datetime.date.today())
        ArticleTranslation.objects.create(
            article=na, lang="fi", title="foo", body="bar")
        self.assertQuerysetEqual(
            NewsArticle.objects.select_related('active_translation'),
            [na], lambda x: x
        )
        with self.assertNumQueries(1):
            self.assertEqual(
                NewsArticle.objects.select_related(
                    'active_translation')[0].active_translation.title,
                "foo")

class FormsTests(TestCase):
    # ForeignObjects should not have any form fields, currently the user needs