Loading django/core/serializers/base.py +1 −1 Original line number Diff line number Diff line Loading @@ -201,7 +201,7 @@ class DeserializedObject(object): models.Model.save_base(self.object, using=using, raw=True, **kwargs) if self.m2m_data and save_m2m: for accessor_name, object_list in self.m2m_data.items(): setattr(self.object, accessor_name, object_list) getattr(self.object, accessor_name).set(object_list) # prevent a second (possibly accidental) call to save() from saving # the m2m data twice. Loading django/db/models/fields/related.py +1 −1 Original line number Diff line number Diff line Loading @@ -1600,7 +1600,7 @@ class ManyToManyField(RelatedField): return getattr(obj, self.attname).all() def save_form_data(self, instance, data): setattr(instance, self.attname, data) getattr(instance, self.attname).set(data) def formfield(self, **kwargs): db = kwargs.pop('using', None) Loading django/db/models/fields/related_descriptors.py +7 −0 Original line number Diff line number Diff line Loading @@ -62,11 +62,13 @@ and two directions (forward and reverse) for a total of six combinations. from __future__ import unicode_literals import warnings from operator import attrgetter from django.db import connections, router, transaction from django.db.models import Q, signals from django.db.models.query import QuerySet from django.utils.deprecation import RemovedInDjango20Warning from django.utils.functional import cached_property Loading Loading @@ -477,6 +479,11 @@ class ReverseManyToOneDescriptor(object): - ``instance`` is the ``parent`` instance - ``value`` in the ``children`` sequence on the right of the equal sign """ warnings.warn( 'Direct assignment to the reverse side of a related set is ' 'deprecated due to the implicit save() that happens. Use %s.set() ' 'instead.' % self.rel.get_accessor_name(), RemovedInDjango20Warning, stacklevel=2, ) manager = self.__get__(instance) manager.set(value) Loading docs/internals/deprecation.txt +3 −0 Original line number Diff line number Diff line Loading @@ -109,6 +109,9 @@ details on these changes. * The ``makemigrations --exit`` option will be removed. * Support for direct assignment to a reverse foreign key or many-to-many relation will be removed. .. _deprecation-removed-in-1.10: 1.10 Loading docs/ref/contrib/auth.txt +1 −1 Original line number Diff line number Diff line Loading @@ -337,7 +337,7 @@ Fields Many-to-many field to :class:`~django.contrib.auth.models.Permission`:: group.permissions = [permission_list] group.permissions.set([permission_list]) group.permissions.add(permission, permission, ...) group.permissions.remove(permission, permission, ...) group.permissions.clear() Loading Loading
django/core/serializers/base.py +1 −1 Original line number Diff line number Diff line Loading @@ -201,7 +201,7 @@ class DeserializedObject(object): models.Model.save_base(self.object, using=using, raw=True, **kwargs) if self.m2m_data and save_m2m: for accessor_name, object_list in self.m2m_data.items(): setattr(self.object, accessor_name, object_list) getattr(self.object, accessor_name).set(object_list) # prevent a second (possibly accidental) call to save() from saving # the m2m data twice. Loading
django/db/models/fields/related.py +1 −1 Original line number Diff line number Diff line Loading @@ -1600,7 +1600,7 @@ class ManyToManyField(RelatedField): return getattr(obj, self.attname).all() def save_form_data(self, instance, data): setattr(instance, self.attname, data) getattr(instance, self.attname).set(data) def formfield(self, **kwargs): db = kwargs.pop('using', None) Loading
django/db/models/fields/related_descriptors.py +7 −0 Original line number Diff line number Diff line Loading @@ -62,11 +62,13 @@ and two directions (forward and reverse) for a total of six combinations. from __future__ import unicode_literals import warnings from operator import attrgetter from django.db import connections, router, transaction from django.db.models import Q, signals from django.db.models.query import QuerySet from django.utils.deprecation import RemovedInDjango20Warning from django.utils.functional import cached_property Loading Loading @@ -477,6 +479,11 @@ class ReverseManyToOneDescriptor(object): - ``instance`` is the ``parent`` instance - ``value`` in the ``children`` sequence on the right of the equal sign """ warnings.warn( 'Direct assignment to the reverse side of a related set is ' 'deprecated due to the implicit save() that happens. Use %s.set() ' 'instead.' % self.rel.get_accessor_name(), RemovedInDjango20Warning, stacklevel=2, ) manager = self.__get__(instance) manager.set(value) Loading
docs/internals/deprecation.txt +3 −0 Original line number Diff line number Diff line Loading @@ -109,6 +109,9 @@ details on these changes. * The ``makemigrations --exit`` option will be removed. * Support for direct assignment to a reverse foreign key or many-to-many relation will be removed. .. _deprecation-removed-in-1.10: 1.10 Loading
docs/ref/contrib/auth.txt +1 −1 Original line number Diff line number Diff line Loading @@ -337,7 +337,7 @@ Fields Many-to-many field to :class:`~django.contrib.auth.models.Permission`:: group.permissions = [permission_list] group.permissions.set([permission_list]) group.permissions.add(permission, permission, ...) group.permissions.remove(permission, permission, ...) group.permissions.clear() Loading