mirror of
https://github.com/django/django.git
synced 2025-10-24 06:06:09 +00:00
Fixed #26186 -- Documented how app relative relationships of abstract models behave.
This partially reverts commit bc7d201bdb.
Thanks Tim for the review.
Refs #25858.
This commit is contained in:
@@ -254,10 +254,6 @@ class ForeignKeyTests(test.TestCase):
|
||||
|
||||
@isolate_apps('model_fields', 'model_fields.tests')
|
||||
def test_abstract_model_app_relative_foreign_key(self):
|
||||
class Refered(models.Model):
|
||||
class Meta:
|
||||
app_label = 'model_fields'
|
||||
|
||||
class AbstractReferent(models.Model):
|
||||
reference = models.ForeignKey('Refered', on_delete=models.CASCADE)
|
||||
|
||||
@@ -265,11 +261,19 @@ class ForeignKeyTests(test.TestCase):
|
||||
app_label = 'model_fields'
|
||||
abstract = True
|
||||
|
||||
class ConcreteReferent(AbstractReferent):
|
||||
class Meta:
|
||||
app_label = 'tests'
|
||||
def assert_app_model_resolved(label):
|
||||
class Refered(models.Model):
|
||||
class Meta:
|
||||
app_label = label
|
||||
|
||||
self.assertEqual(ConcreteReferent._meta.get_field('reference').related_model, Refered)
|
||||
class ConcreteReferent(AbstractReferent):
|
||||
class Meta:
|
||||
app_label = label
|
||||
|
||||
self.assertEqual(ConcreteReferent._meta.get_field('reference').related_model, Refered)
|
||||
|
||||
assert_app_model_resolved('model_fields')
|
||||
assert_app_model_resolved('tests')
|
||||
|
||||
|
||||
class ManyToManyFieldTests(test.SimpleTestCase):
|
||||
@@ -295,14 +299,6 @@ class ManyToManyFieldTests(test.SimpleTestCase):
|
||||
|
||||
@isolate_apps('model_fields', 'model_fields.tests')
|
||||
def test_abstract_model_app_relative_foreign_key(self):
|
||||
class Refered(models.Model):
|
||||
class Meta:
|
||||
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 AbstractReferent(models.Model):
|
||||
reference = models.ManyToManyField('Refered', through='Through')
|
||||
|
||||
@@ -310,12 +306,27 @@ class ManyToManyFieldTests(test.SimpleTestCase):
|
||||
app_label = 'model_fields'
|
||||
abstract = True
|
||||
|
||||
class ConcreteReferent(AbstractReferent):
|
||||
class Meta:
|
||||
app_label = 'tests'
|
||||
def assert_app_model_resolved(label):
|
||||
class Refered(models.Model):
|
||||
class Meta:
|
||||
app_label = label
|
||||
|
||||
self.assertEqual(ConcreteReferent._meta.get_field('reference').related_model, Refered)
|
||||
self.assertEqual(ConcreteReferent.reference.through, Through)
|
||||
class Through(models.Model):
|
||||
refered = models.ForeignKey('Refered', on_delete=models.CASCADE)
|
||||
referent = models.ForeignKey('ConcreteReferent', on_delete=models.CASCADE)
|
||||
|
||||
class Meta:
|
||||
app_label = label
|
||||
|
||||
class ConcreteReferent(AbstractReferent):
|
||||
class Meta:
|
||||
app_label = label
|
||||
|
||||
self.assertEqual(ConcreteReferent._meta.get_field('reference').related_model, Refered)
|
||||
self.assertEqual(ConcreteReferent.reference.through, Through)
|
||||
|
||||
assert_app_model_resolved('model_fields')
|
||||
assert_app_model_resolved('tests')
|
||||
|
||||
|
||||
class TextFieldTests(test.TestCase):
|
||||
|
||||
Reference in New Issue
Block a user