summaryrefslogtreecommitdiff
path: root/tests/many_to_one_null/tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/many_to_one_null/tests.py')
-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)