mirror of
https://github.com/django/django.git
synced 2025-10-26 07:06:08 +00:00
Refs #25550 -- Removed support for direct assignment to the reverse side of a related set.
This commit is contained in:
@@ -510,28 +510,16 @@ class ReverseManyToOneDescriptor(object):
|
||||
return self.related_manager_cls(instance)
|
||||
|
||||
def _get_set_deprecation_msg_params(self):
|
||||
return ( # RemovedInDjango20Warning
|
||||
return (
|
||||
'reverse side of a related set',
|
||||
self.rel.get_accessor_name(),
|
||||
)
|
||||
|
||||
def __set__(self, instance, value):
|
||||
"""
|
||||
Set the related objects through the reverse relation.
|
||||
|
||||
With the example above, when setting ``parent.children = children``:
|
||||
|
||||
- ``self`` is the descriptor managing the ``children`` attribute
|
||||
- ``instance`` is the ``parent`` instance
|
||||
- ``value`` is the ``children`` sequence on the right of the equal sign
|
||||
"""
|
||||
warnings.warn(
|
||||
'Direct assignment to the %s is deprecated due to the implicit '
|
||||
'save() that happens. Use %s.set() instead.' % self._get_set_deprecation_msg_params(),
|
||||
RemovedInDjango20Warning, stacklevel=2,
|
||||
raise TypeError(
|
||||
'Direct assignment to the %s is prohibited. Use %s.set() instead.'
|
||||
% self._get_set_deprecation_msg_params(),
|
||||
)
|
||||
manager = self.__get__(instance)
|
||||
manager.set(value)
|
||||
|
||||
|
||||
def create_reverse_many_to_one_manager(superclass, rel):
|
||||
@@ -772,7 +760,7 @@ class ManyToManyDescriptor(ReverseManyToOneDescriptor):
|
||||
)
|
||||
|
||||
def _get_set_deprecation_msg_params(self):
|
||||
return ( # RemovedInDjango20Warning
|
||||
return (
|
||||
'%s side of a many-to-many set' % ('reverse' if self.reverse else 'forward'),
|
||||
self.rel.get_accessor_name() if self.reverse else self.field.name,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user