Fixed ._meta.pk_index() virtual field failure
This commit is contained in:
parent
dab52d99fc
commit
92476e880c
|
@ -204,9 +204,10 @@ class Options(object):
|
||||||
|
|
||||||
def pk_index(self):
|
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):
|
def setup_proxy(self, target):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -140,6 +140,9 @@ class Article(models.Model):
|
||||||
except ArticleTranslation.DoesNotExist:
|
except ArticleTranslation.DoesNotExist:
|
||||||
return '[No translation found]'
|
return '[No translation found]'
|
||||||
|
|
||||||
|
class NewsArticle(Article):
|
||||||
|
pass
|
||||||
|
|
||||||
class ArticleTranslation(models.Model):
|
class ArticleTranslation(models.Model):
|
||||||
article = models.ForeignKey(Article)
|
article = models.ForeignKey(Article)
|
||||||
lang = models.CharField(max_length='2')
|
lang = models.CharField(max_length='2')
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
import datetime
|
import datetime
|
||||||
from operator import attrgetter
|
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.test import TestCase
|
||||||
from django.utils.translation import activate
|
from django.utils.translation import activate
|
||||||
from django.core.exceptions import FieldError
|
from django.core.exceptions import FieldError
|
||||||
|
@ -339,6 +341,20 @@ class MultiColumnFKTests(TestCase):
|
||||||
with self.assertRaises(FieldError):
|
with self.assertRaises(FieldError):
|
||||||
Article.objects.filter(ideas__name="idea1")
|
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):
|
class FormsTests(TestCase):
|
||||||
# ForeignObjects should not have any form fields, currently the user needs
|
# ForeignObjects should not have any form fields, currently the user needs
|
||||||
|
|
Loading…
Reference in New Issue