mirror of
https://github.com/django/django.git
synced 2025-08-03 10:34:04 +00:00
Fixed #26352 -- Made system check allow ManyToManyField to target the same model if through_fields differs.
This commit is contained in:
parent
f2d5dafec9
commit
586a9dc429
3 changed files with 29 additions and 6 deletions
|
@ -771,13 +771,35 @@ class OtherModelTests(SimpleTestCase):
|
|||
|
||||
self.assertEqual(Group.check(), [
|
||||
Error(
|
||||
"The model has two many-to-many relations through "
|
||||
"The model has two identical many-to-many relations through "
|
||||
"the intermediate model 'invalid_models_tests.Membership'.",
|
||||
obj=Group,
|
||||
id='models.E003',
|
||||
)
|
||||
])
|
||||
|
||||
def test_two_m2m_through_same_model_with_different_through_fields(self):
|
||||
class Country(models.Model):
|
||||
pass
|
||||
|
||||
class ShippingMethod(models.Model):
|
||||
to_countries = models.ManyToManyField(
|
||||
Country, through='ShippingMethodPrice',
|
||||
through_fields=('method', 'to_country'),
|
||||
)
|
||||
from_countries = models.ManyToManyField(
|
||||
Country, through='ShippingMethodPrice',
|
||||
through_fields=('method', 'from_country'),
|
||||
related_name='+',
|
||||
)
|
||||
|
||||
class ShippingMethodPrice(models.Model):
|
||||
method = models.ForeignKey(ShippingMethod, models.CASCADE)
|
||||
to_country = models.ForeignKey(Country, models.CASCADE)
|
||||
from_country = models.ForeignKey(Country, models.CASCADE)
|
||||
|
||||
self.assertEqual(ShippingMethod.check(), [])
|
||||
|
||||
def test_missing_parent_link(self):
|
||||
msg = 'Add parent_link=True to invalid_models_tests.ParkingLot.parent.'
|
||||
with self.assertRaisesMessage(ImproperlyConfigured, msg):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue