diff options
| author | Tim Graham <timograham@gmail.com> | 2015-11-20 10:31:33 -0500 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2015-11-21 11:41:06 -0500 |
| commit | 2179e5a2bcf42fc902eff4d586756665b9ac8f42 (patch) | |
| tree | 22dbff7d3d1e2839f294e245500887267a164900 /tests/basic | |
| parent | bc8bae0ba986b33f19ab72d65760e5a904a682d7 (diff) | |
[1.8.x] Fixed #25715 -- Fixed Model.refresh_from_db() with ForeignKey w/on_delete=SET_NULL.
Backport of 54e2e688e1cfbdb37dfa5dd3b3ffdf2af12b4423 from master
Diffstat (limited to 'tests/basic')
| -rw-r--r-- | tests/basic/models.py | 1 | ||||
| -rw-r--r-- | tests/basic/tests.py | 11 |
2 files changed, 12 insertions, 0 deletions
diff --git a/tests/basic/models.py b/tests/basic/models.py index 86d0f0c4e4..0ebe3e0b4a 100644 --- a/tests/basic/models.py +++ b/tests/basic/models.py @@ -30,6 +30,7 @@ class ArticleSelectOnSave(Article): class SelfRef(models.Model): selfref = models.ForeignKey('self', null=True, blank=True, related_name='+') + article = models.ForeignKey(Article, on_delete=models.SET_NULL, null=True, blank=True) def __str__(self): # This method intentionally doesn't work for all cases - part diff --git a/tests/basic/tests.py b/tests/basic/tests.py index e5c70b22e3..3f420d427b 100644 --- a/tests/basic/tests.py +++ b/tests/basic/tests.py @@ -767,6 +767,17 @@ class ModelRefreshTests(TestCase): self.assertEqual(a2.pub_date, pub_date) self.assertEqual(a2._state.db, "default") + def test_refresh_fk_on_delete_set_null(self): + a = Article.objects.create( + headline='Parrot programs in Python', + pub_date=datetime(2005, 7, 28), + ) + s1 = SelfRef.objects.create(article=a) + a.delete() + s1.refresh_from_db() + self.assertIsNone(s1.article_id) + self.assertIsNone(s1.article) + def test_refresh_no_fields(self): a = Article.objects.create(pub_date=self._truncate_ms(datetime.now())) with self.assertNumQueries(0): |
