Merge pull request #917 from DavidBord/fix-595
Fix #595: Support += and *= for ListField
This commit is contained in:
		| @@ -5,6 +5,10 @@ Changelog | |||||||
|  |  | ||||||
| Changes in 0.9.X - DEV | Changes in 0.9.X - DEV | ||||||
| ====================== | ====================== | ||||||
|  | - Support += and *= for ListField #595 | ||||||
|  |  | ||||||
|  | Changes in 0.9.0 | ||||||
|  | ================ | ||||||
| - Update FileField when creating a new file #714 | - Update FileField when creating a new file #714 | ||||||
| - Added `EmbeddedDocumentListField` for Lists of Embedded Documents. #826 | - Added `EmbeddedDocumentListField` for Lists of Embedded Documents. #826 | ||||||
| - ComplexDateTimeField should fall back to None when null=True #864 | - ComplexDateTimeField should fall back to None when null=True #864 | ||||||
|   | |||||||
| @@ -156,6 +156,14 @@ class BaseList(list): | |||||||
|         self = state |         self = state | ||||||
|         return self |         return self | ||||||
|  |  | ||||||
|  |     def __iadd__(self, other): | ||||||
|  |         self._mark_as_changed() | ||||||
|  |         return super(BaseList, self).__iadd__(other) | ||||||
|  |  | ||||||
|  |     def __imul__(self, other): | ||||||
|  |         self._mark_as_changed() | ||||||
|  |         return super(BaseList, self).__imul__(other) | ||||||
|  |  | ||||||
|     def append(self, *args, **kwargs): |     def append(self, *args, **kwargs): | ||||||
|         self._mark_as_changed() |         self._mark_as_changed() | ||||||
|         return super(BaseList, self).append(*args, **kwargs) |         return super(BaseList, self).append(*args, **kwargs) | ||||||
|   | |||||||
| @@ -946,6 +946,18 @@ class FieldTest(unittest.TestCase): | |||||||
|             BlogPost.objects.filter(info__0__test__exact='5').count(), 0) |             BlogPost.objects.filter(info__0__test__exact='5').count(), 0) | ||||||
|         self.assertEqual( |         self.assertEqual( | ||||||
|             BlogPost.objects.filter(info__100__test__exact='test').count(), 0) |             BlogPost.objects.filter(info__100__test__exact='test').count(), 0) | ||||||
|  |  | ||||||
|  |         post = BlogPost() | ||||||
|  |         post.info = ['1', '2'] | ||||||
|  |         post.save() | ||||||
|  |         post = BlogPost.objects(info=['1', '2']).get() | ||||||
|  |         post.info += ['3', '4'] | ||||||
|  |         post.save() | ||||||
|  |         self.assertEqual(BlogPost.objects(info=['1', '2', '3', '4']).count(), 1) | ||||||
|  |         post = BlogPost.objects(info=['1', '2', '3', '4']).get() | ||||||
|  |         post.info *= 2 | ||||||
|  |         post.save() | ||||||
|  |         self.assertEqual(BlogPost.objects(info=['1', '2', '3', '4', '1', '2', '3', '4']).count(), 1) | ||||||
|         BlogPost.drop_collection() |         BlogPost.drop_collection() | ||||||
|  |  | ||||||
|     def test_list_field_passed_in_value(self): |     def test_list_field_passed_in_value(self): | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user