Django Decorator订单信号

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

我正在阅读有关django信号的教程,并且遇到了一个例子

@receiver(post_save, sender=User)
  def create_user_profile(sender, instance, created, **kwargs):
    if created:
      Profile.objects.create(user=instance)


@receiver(post_save, sender=User)
  def save_user_profile(sender, instance, **kwargs):
    instance.profile.save()

我们如何选择订单或操作?

我们如何知道save_user_profile之前的create_user_profile execs?

如果顺序是由声明决定的,那么当代码通过git或svn或其他任何东西自动合并时,是否有点危险?

python django signals decorator
1个回答
0
投票

我不确定是否可行。核心开发人员说:

有时在所有其他信号中优先呼叫一个信号或在队列中呼叫信号非常重要。当前,当您连接信号时,它们按照连接顺序执行;但是它对确保连接方法执行的顺序很重要。提议的解决方案是添加order参数来连接信号,因此在需要时,您可以提供正确的排序,但是所有其他代码仍然兼容。

在某些情况下,您可以使用pre_savepost_save,但我仍不确定其更好的主意

© www.soinside.com 2019 - 2024. All rights reserved.