【问题标题】:Django intercept adding objects to Many-to-Many fieldDjango拦截将对象添加到多对多字段
【发布时间】:2020-03-28 01:02:28
【问题描述】:

我正在构建一个 Django 应用程序,我想覆盖默认添加到多对多字段行为。假设我想在创建 2 个对象之间的关系时打印出一些东西。

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

谢谢大家。

【问题讨论】:

    标签: python django


    【解决方案1】:

    重写ManyRelatedManageradd()方法没那么简单

    您可以使用提供的m2m-changed 信号来获取您的其他内容

    【讨论】:

    • 非常感谢。这正是我所需要的
    猜你喜欢
    • 2013-08-18
    • 1970-01-01
    • 2018-10-05
    • 1970-01-01
    • 1970-01-01
    • 2016-08-24
    • 2015-12-24
    • 2013-04-27
    相关资源
    最近更新 更多