Django使用内联时更改pre_save post_save信号的顺序吗?

问题描述 投票:2回答:1

我有一个Order(1)和OrderLine(n)模型,这里的订单可以有多条订单行。这是来自Django-admin内部的[[all run,其中OrderLine被设置为inlinesOrderAdmin(admin.ModelAdmin)的一部分。

简化如下:

class OrderLine(admin.StackedInline): pass @admin.register(Order) class OrderAdmin(admin.ModelAdmin): inlines = [OrderLine]

我在两个型号上都注册了pre_savepost_save。 Django按照以下顺序调用这些信号:

    订购| pre_save
  1. 订购| post_save
  2. OrderLine 1 | pre_save
  3. OrderLine 1 | post_save
  4. OrderLine 2 | pre_save
  5. OrderLine 2 | post_save
  6. OrderLine
  7. n
| | pre_saveOrderLine
  • n
  • | | post_save我遇到的[[issue是,我想更改被调用信号的顺序,如下所示:

    订购| pre_save

      OrderLine 1 | pre_save
    1. OrderLine 1 | post_save
    2. OrderLine 2 | pre_save
    3. OrderLine 2 | post_save
    4. OrderLine
    5. n

    | | pre_save
  • OrderLine n | | post_save
  • 订购| post_save
  • 因为我需要在每个OrderLine中进行一些计算,并且需要在Order中使用这些结果。但是post signal已被调用。

    我看到的唯一解决方案是在每个OrderLine post signal上调用我的代码,这有点多余,尤其是当您有许多订单行时。

    解决这个问题的最好/更好的方法是什么?
  • django django-models django-admin django-signals
    1个回答
    0
    投票
    © www.soinside.com 2019 - 2024. All rights reserved.