mirror of
https://github.com/django/django.git
synced 2025-10-24 06:06:09 +00:00
Fixed #21127 -- Started deprecation toward requiring on_delete for ForeignKey/OneToOneField
This commit is contained in:
committed by
Tim Graham
parent
87d55081ea
commit
c2e70f0265
@@ -23,7 +23,7 @@ class FieldDeconstructionTests(SimpleTestCase):
|
||||
self.assertEqual(name, "is_awesome_test")
|
||||
self.assertIsInstance(name, six.text_type)
|
||||
# Now try with a ForeignKey
|
||||
field = models.ForeignKey("some_fake.ModelName")
|
||||
field = models.ForeignKey("some_fake.ModelName", models.CASCADE)
|
||||
name, path, args, kwargs = field.deconstruct()
|
||||
self.assertIsNone(name)
|
||||
field.set_attributes_from_name("author")
|
||||
@@ -177,55 +177,55 @@ class FieldDeconstructionTests(SimpleTestCase):
|
||||
def test_foreign_key(self):
|
||||
# Test basic pointing
|
||||
from django.contrib.auth.models import Permission
|
||||
field = models.ForeignKey("auth.Permission")
|
||||
field = models.ForeignKey("auth.Permission", models.CASCADE)
|
||||
field.remote_field.model = Permission
|
||||
field.remote_field.field_name = "id"
|
||||
name, path, args, kwargs = field.deconstruct()
|
||||
self.assertEqual(path, "django.db.models.ForeignKey")
|
||||
self.assertEqual(args, [])
|
||||
self.assertEqual(kwargs, {"to": "auth.Permission"})
|
||||
self.assertEqual(kwargs, {"to": "auth.Permission", "on_delete": models.CASCADE})
|
||||
self.assertFalse(hasattr(kwargs['to'], "setting_name"))
|
||||
# Test swap detection for swappable model
|
||||
field = models.ForeignKey("auth.User")
|
||||
field = models.ForeignKey("auth.User", models.CASCADE)
|
||||
name, path, args, kwargs = field.deconstruct()
|
||||
self.assertEqual(path, "django.db.models.ForeignKey")
|
||||
self.assertEqual(args, [])
|
||||
self.assertEqual(kwargs, {"to": "auth.User"})
|
||||
self.assertEqual(kwargs, {"to": "auth.User", "on_delete": models.CASCADE})
|
||||
self.assertEqual(kwargs['to'].setting_name, "AUTH_USER_MODEL")
|
||||
# Test nonexistent (for now) model
|
||||
field = models.ForeignKey("something.Else")
|
||||
field = models.ForeignKey("something.Else", models.CASCADE)
|
||||
name, path, args, kwargs = field.deconstruct()
|
||||
self.assertEqual(path, "django.db.models.ForeignKey")
|
||||
self.assertEqual(args, [])
|
||||
self.assertEqual(kwargs, {"to": "something.Else"})
|
||||
self.assertEqual(kwargs, {"to": "something.Else", "on_delete": models.CASCADE})
|
||||
# Test on_delete
|
||||
field = models.ForeignKey("auth.User", on_delete=models.SET_NULL)
|
||||
field = models.ForeignKey("auth.User", models.SET_NULL)
|
||||
name, path, args, kwargs = field.deconstruct()
|
||||
self.assertEqual(path, "django.db.models.ForeignKey")
|
||||
self.assertEqual(args, [])
|
||||
self.assertEqual(kwargs, {"to": "auth.User", "on_delete": models.SET_NULL})
|
||||
# Test to_field preservation
|
||||
field = models.ForeignKey("auth.Permission", to_field="foobar")
|
||||
field = models.ForeignKey("auth.Permission", models.CASCADE, to_field="foobar")
|
||||
name, path, args, kwargs = field.deconstruct()
|
||||
self.assertEqual(path, "django.db.models.ForeignKey")
|
||||
self.assertEqual(args, [])
|
||||
self.assertEqual(kwargs, {"to": "auth.Permission", "to_field": "foobar"})
|
||||
self.assertEqual(kwargs, {"to": "auth.Permission", "to_field": "foobar", "on_delete": models.CASCADE})
|
||||
# Test related_name preservation
|
||||
field = models.ForeignKey("auth.Permission", related_name="foobar")
|
||||
field = models.ForeignKey("auth.Permission", models.CASCADE, related_name="foobar")
|
||||
name, path, args, kwargs = field.deconstruct()
|
||||
self.assertEqual(path, "django.db.models.ForeignKey")
|
||||
self.assertEqual(args, [])
|
||||
self.assertEqual(kwargs, {"to": "auth.Permission", "related_name": "foobar"})
|
||||
self.assertEqual(kwargs, {"to": "auth.Permission", "related_name": "foobar", "on_delete": models.CASCADE})
|
||||
|
||||
@override_settings(AUTH_USER_MODEL="auth.Permission")
|
||||
def test_foreign_key_swapped(self):
|
||||
# It doesn't matter that we swapped out user for permission;
|
||||
# there's no validation. We just want to check the setting stuff works.
|
||||
field = models.ForeignKey("auth.Permission")
|
||||
field = models.ForeignKey("auth.Permission", models.CASCADE)
|
||||
name, path, args, kwargs = field.deconstruct()
|
||||
self.assertEqual(path, "django.db.models.ForeignKey")
|
||||
self.assertEqual(args, [])
|
||||
self.assertEqual(kwargs, {"to": "auth.Permission"})
|
||||
self.assertEqual(kwargs, {"to": "auth.Permission", "on_delete": models.CASCADE})
|
||||
self.assertEqual(kwargs['to'].setting_name, "AUTH_USER_MODEL")
|
||||
|
||||
def test_image_field(self):
|
||||
|
||||
Reference in New Issue
Block a user