如何按顺序触发 Django 信号

How to trigger Django Signals in sequence

我发射的信号有 3 个不同的接收器。我想做的是使用信号 update_student 更新 table Student,稍后我想更新他在 update_student_enrollment.

中的注册

我想在 Student 更新后更新 Enrollment。但是我的更新注册接收器在学生更新之前触发。

正在发送信号。

Signal.send("student_updated", student_id=1, active=active)

接收者 1

@receiver(student_updated)
def update_student(sender, **kwargs):
    Student.objects.update(active=0) # I am setting the student activation to false. For simplicity I am not mentioning the logic which is setting the student to inactive.    
    print("Student Updated!")

接收者 2

@receiver(student_updated)
def update_student_enrollment(sender, **kwargs):
    student=Student.objects.filter(student_id=1)
    if student.active=0:
        StudentEnrollment.objects.filter(student_id=1).update(active=0)

不知何故,我的 Receiver 2Receiver 1 之前发射。

无法在 Django 中明确指定信号的顺序。

处理此问题的最佳方法是让接收器 1 信号本身发送一个信号,您可以让接收器 2 监听该信号。