如何按顺序触发Django信号

时间:2017-05-19 07:06:41

标签: django django-orm django-signals

我正在发射一个有3个不同接收器的信号。我想要做的是使用信号Student更新表格update_student,稍后我想更新update_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 2不知何故在Receiver 1之前开火。

1 个答案:

答案 0 :(得分:0)

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

你可以处理这个问题的最好方法是让接收器1信号发出一个信号,你可以让接收器2听到。