Django перехватывает добавление объектов в поле «многие ко многим» - PullRequest
0 голосов
/ 28 марта 2020

Я создаю приложение Django и хочу перезаписать стандартное поведение, добавляя к поведению поля многие ко многим. Скажем, я хочу распечатать что-то, когда создается связь между двумя объектами.

class Foo(Model):
    ...

class Bar(Model):
    foos = ManyToManyField(Foo)

Есть ли где-нибудь место, где я могу перезаписать метод add класса менеджера отношений многие ко многим? Что-то вроде

class ???:
    def add(self, obj, *args, **kwargs):
         super().add(obj, *args, **kwargs)
         print(f"{obj} added")

и ожидаемый результат должен быть

>>> foo1 = Foo.objects.create(...)
>>> bar = Bar.objects.create()
>>> bar.foos.add(foo1)
foo1 added

Спасибо всем.

1 Ответ

1 голос
/ 28 марта 2020

Переопределение ManyRelatedManager add() метод не так прост

Вы можете использовать предоставленный m2m-измененный сигнал, чтобы получить ваши дополнительные вещи в

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...