代码之家  ›  专栏  ›  技术社区  ›  Bernhard Vallant

django:queryset.update上的信号

  •  8
  • Bernhard Vallant  · 技术社区  · 15 年前

    如果您正在使用 queryset.delete() 方法,但它不应该同时发送前/后保存 queryset.update() ?

    1 回复  |  直到 15 年前
        1
  •  7
  •   Josh Ourisman    15 年前

    可能是应该的,但不是。.update()不会对查询集中的单个对象调用.save()方法,而是在一个SQL调用中更新all(如发生更新)。因为它不使用.save(),所以调用保存前和保存后的信号是不一致的。我当然可以设想一些用例,在这些用例中人们可能希望它这样做,但是我也可以设想一些用例,在这些用例中人们不希望这样做。在我看来,不调用保存前和保存后的信号是正确的行为,因为它为程序员留下了更多的灵活性。手动触发这些信号并不难,我认为让程序员记住触发信号以获得所需的行为肯定比让他们记住断开信号以避免不希望的行为要好。