【问题标题】:Django: update field of ManyToMany instance when it's setDjango:设置时更新ManyToMany实例的字段
【发布时间】:2020-08-28 13:00:06
【问题描述】:

.set()设置ManyToMany关系时可以做点什么吗?

假设我们有:

class ModelA():
  b_models = models.ManyToManyField(ModelB, related_name="as", through="ModelMN")

class ModelMN():
  model_a = models.ForeignKey(ModelA)
  model_b = models.ForeignKey(ModelB)

当我们有一个 Model A 实例和 Model B 实例列表时:

a = ModelA()
a.set([b1, b2, b3])

调用.set() 时,会为每个 a-b 关系创建一个 ModelMN 实例。是否可以在每次创建时修改该实例的字段(每个 ModelMN 实例)?

ModelMN 上覆盖.save() 方法似乎不起作用。

【问题讨论】:

    标签: python django many-to-many django-3.0


    【解决方案1】:

    我在寻找m2m_changed 信号。

    @receiver(m2m_changed, sender=ModelA.b_models.through)
    function do_something(sender, **kwargs):
        ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-09
      • 2019-01-05
      • 1970-01-01
      • 2019-08-08
      • 1970-01-01
      • 2020-07-20
      相关资源
      最近更新 更多