Loading django/db/models/options.py +3 −2 Original line number Diff line number Diff line Loading @@ -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): """ Loading tests/foreign_object/models.py +3 −0 Original line number Diff line number Diff line Loading @@ -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') Loading tests/foreign_object/tests.py +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 Loading Loading @@ -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 Loading Loading
django/db/models/options.py +3 −2 Original line number Diff line number Diff line Loading @@ -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): """ Loading
tests/foreign_object/models.py +3 −0 Original line number Diff line number Diff line Loading @@ -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') Loading
tests/foreign_object/tests.py +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 Loading Loading @@ -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 Loading