mirror of
https://github.com/django/django.git
synced 2025-10-24 06:06:09 +00:00
Fixed #6707 -- Added RelatedManager.set() and made descriptors' __set__ use it.
Thanks Anssi Kääriäinen, Carl Meyer, Collin Anderson, and Tim Graham for the reviews.
This commit is contained in:
@@ -74,9 +74,26 @@ class ManyToOneNullTests(TestCase):
|
||||
self.assertRaises(Reporter.DoesNotExist, self.r.article_set.remove, self.a4)
|
||||
self.assertQuerysetEqual(self.r2.article_set.all(), ['<Article: Fourth>'])
|
||||
|
||||
def test_set(self):
|
||||
# Use manager.set() to allocate ForeignKey. Null is legal, so existing
|
||||
# members of the set that are not in the assignment set are set to null.
|
||||
self.r2.article_set.set([self.a2, self.a3])
|
||||
self.assertQuerysetEqual(self.r2.article_set.all(),
|
||||
['<Article: Second>', '<Article: Third>'])
|
||||
# Use manager.set(clear=True)
|
||||
self.r2.article_set.set([self.a3, self.a4], clear=True)
|
||||
self.assertQuerysetEqual(self.r2.article_set.all(),
|
||||
['<Article: Fourth>', '<Article: Third>'])
|
||||
# Clear the rest of the set
|
||||
self.r2.article_set.set([])
|
||||
self.assertQuerysetEqual(self.r2.article_set.all(), [])
|
||||
self.assertQuerysetEqual(Article.objects.filter(reporter__isnull=True),
|
||||
['<Article: Fourth>', '<Article: Second>', '<Article: Third>'])
|
||||
|
||||
def test_assign_clear_related_set(self):
|
||||
# Use descriptor assignment to allocate ForeignKey. Null is legal, so
|
||||
# existing members of set that are not in the assignment set are set null
|
||||
# existing members of the set that are not in the assignment set are
|
||||
# set to null.
|
||||
self.r2.article_set = [self.a2, self.a3]
|
||||
self.assertQuerysetEqual(self.r2.article_set.all(),
|
||||
['<Article: Second>', '<Article: Third>'])
|
||||
|
||||
Reference in New Issue
Block a user