Django Many-to-many временный

Я не хочу добавлять ссылки, я хочу сделать их временными, как я могу решить эту проблему?

Direct assignment to the forward side of a many-to-many set is prohibited. Use user_permissions.set () instead.

    def __init__(self, *args, **kwargs):
        super().__init__(*args,**kwargs)
        if self.container_folder:
            # setattr(self, "user_permissions", self.container_folder.user_permissions)
            if permission := self.container_folder.user_permissions.all():
                self.user_permissions = [x.pk for x in permission]

Не работает. Каковы ваши предложения по решению проблемы?

venv/lib/python3.9/site-packages/django/db/models/fields/related_descriptors.py

class ReverseManyToOneDescriptor:
    """
    Accessor to the related objects manager on the reverse side of a
    many-to-one relation.

    In the example::

        class Child(Model):
            parent = ForeignKey(Parent, related_name='children')

    ``Parent.children`` is a ``ReverseManyToOneDescriptor`` instance.

    Most of the implementation is delegated to a dynamically defined manager
    class built by ``create_forward_many_to_many_manager()`` defined below.
    """

    def __init__(self, rel):
        self.rel = rel
        self.field = rel.field

    @cached_property
    def related_manager_cls(self):
        related_model = self.rel.related_model

        return create_reverse_many_to_one_manager(
            related_model._default_manager.__class__,
            self.rel,
        )

    def __get__(self, instance, cls=None):
        """
        Get the related objects through the reverse relation.

        With the example above, when getting ``parent.children``:

        - ``self`` is the descriptor managing the ``children`` attribute
        - ``instance`` is the ``parent`` instance
        - ``cls`` is the ``Parent`` class (unused)
        """
        if instance is None:
            return self

        return self.related_manager_cls(instance)

    def _get_set_deprecation_msg_params(self):
        return (
            'reverse side of a related set',
            self.rel.get_accessor_name(),
        )

    def __set__(self, instance, value):
        raise TypeError(
            'Direct assignment to the %s is prohibited. Use %s.set() instead.'
            % self._get_set_deprecation_msg_params(),
        )

Под капотом я вижу следующий код. Я бы не отказался от прохождения даже на уровне создания объекта как решения.

Вернуться на верх