summaryrefslogtreecommitdiff
path: root/tests/many_to_one_null
diff options
context:
space:
mode:
authorAlbert Defler <alnw@interia.eu>2022-01-14 12:44:17 +0000
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2022-02-22 09:16:40 +0100
commit7ba6ebe9149ae38257d70100e8bfbfd0da189862 (patch)
tree1219f1c985851c59e2904add0ce5a74c3b048ef0 /tests/many_to_one_null
parentb7f263551c64e3f80544892e314ed5b0b22cc7c8 (diff)
Fixed #19580 -- Unified behavior of reverse foreign key and many-to-many relations for unsaved instances.
Diffstat (limited to 'tests/many_to_one_null')
-rw-r--r--tests/many_to_one_null/tests.py33
1 files changed, 33 insertions, 0 deletions
diff --git a/tests/many_to_one_null/tests.py b/tests/many_to_one_null/tests.py
index 5bd06b1ac4..f92d49f0a9 100644
--- a/tests/many_to_one_null/tests.py
+++ b/tests/many_to_one_null/tests.py
@@ -146,3 +146,36 @@ class ManyToOneNullTests(TestCase):
self.assertIs(d1.car, None)
with self.assertNumQueries(0):
self.assertEqual(list(c1.drivers.all()), [])
+
+ def test_unsaved(self):
+ msg = (
+ "'Car' instance needs to have a primary key value before this relationship "
+ "can be used."
+ )
+ with self.assertRaisesMessage(ValueError, msg):
+ Car(make="Ford").drivers.all()
+
+ def test_related_null_to_field_related_managers(self):
+ car = Car.objects.create(make=None)
+ driver = Driver.objects.create()
+ msg = (
+ f'"{car!r}" needs to have a value for field "make" before this '
+ f"relationship can be used."
+ )
+ with self.assertRaisesMessage(ValueError, msg):
+ car.drivers.add(driver)
+ with self.assertRaisesMessage(ValueError, msg):
+ car.drivers.create()
+ with self.assertRaisesMessage(ValueError, msg):
+ car.drivers.get_or_create()
+ with self.assertRaisesMessage(ValueError, msg):
+ car.drivers.update_or_create()
+ with self.assertRaisesMessage(ValueError, msg):
+ car.drivers.remove(driver)
+ with self.assertRaisesMessage(ValueError, msg):
+ car.drivers.clear()
+ with self.assertRaisesMessage(ValueError, msg):
+ car.drivers.set([driver])
+
+ with self.assertNumQueries(0):
+ self.assertEqual(car.drivers.count(), 0)