summaryrefslogtreecommitdiff
path: root/tests/model_fields
diff options
context:
space:
mode:
Diffstat (limited to 'tests/model_fields')
-rw-r--r--tests/model_fields/tests.py54
1 files changed, 54 insertions, 0 deletions
diff --git a/tests/model_fields/tests.py b/tests/model_fields/tests.py
index 34793eacdb..5aafdb2844 100644
--- a/tests/model_fields/tests.py
+++ b/tests/model_fields/tests.py
@@ -7,6 +7,7 @@ from decimal import Decimal
from django import forms, test
from django.apps import apps
+from django.apps.registry import Apps
from django.core import checks, validators
from django.core.exceptions import ValidationError
from django.db import IntegrityError, connection, models, transaction
@@ -247,6 +248,28 @@ class ForeignKeyTests(test.TestCase):
"Pending lookup added for a foreign key on an abstract model"
)
+ def test_abstract_model_app_relative_foreign_key(self):
+ test_apps = Apps(['model_fields', 'model_fields.tests'])
+
+ class Refered(models.Model):
+ class Meta:
+ apps = test_apps
+ app_label = 'model_fields'
+
+ class AbstractReferent(models.Model):
+ reference = models.ForeignKey('Refered', on_delete=models.CASCADE)
+
+ class Meta:
+ app_label = 'model_fields'
+ abstract = True
+
+ class ConcreteReferent(AbstractReferent):
+ class Meta:
+ apps = test_apps
+ app_label = 'tests'
+
+ self.assertEqual(ConcreteReferent._meta.get_field('reference').related_model, Refered)
+
class ManyToManyFieldTests(test.SimpleTestCase):
def test_abstract_model_pending_operations(self):
@@ -269,6 +292,37 @@ class ManyToManyFieldTests(test.SimpleTestCase):
"Pending lookup added for a many-to-many field on an abstract model"
)
+ def test_abstract_model_app_relative_foreign_key(self):
+ test_apps = Apps(['model_fields', 'model_fields.tests'])
+
+ class Refered(models.Model):
+ class Meta:
+ apps = test_apps
+ app_label = 'model_fields'
+
+ class Through(models.Model):
+ refered = models.ForeignKey('Refered', on_delete=models.CASCADE)
+ referent = models.ForeignKey('tests.ConcreteReferent', on_delete=models.CASCADE)
+
+ class Meta:
+ apps = test_apps
+ app_label = 'model_fields'
+
+ class AbstractReferent(models.Model):
+ reference = models.ManyToManyField('Refered', through='Through')
+
+ class Meta:
+ app_label = 'model_fields'
+ abstract = True
+
+ class ConcreteReferent(AbstractReferent):
+ class Meta:
+ apps = test_apps
+ app_label = 'tests'
+
+ self.assertEqual(ConcreteReferent._meta.get_field('reference').related_model, Refered)
+ self.assertEqual(ConcreteReferent.reference.through, Through)
+
class TextFieldTests(test.TestCase):
def test_to_python(self):