如何按顺序触发Django信号
我正在发射一个有3个不同接收器的信号。我想做的是使用信号更新一个表如何按顺序触发Django信号,django,django-orm,django-signals,Django,Django Orm,Django Signals,我正在发射一个有3个不同接收器的信号。我想做的是使用信号更新一个表Student,然后我想更新他的注册 我想在学生更新后更新注册。但我的更新注册接收器在更新学生之前触发 发出信号。 接收器1 接收器2 不知何故,我的接收器2在接收器1之前触发,因此无法在Django中明确指定信号的顺序 处理此问题的最佳方法是让接收器1信号本身发送一个信号,让接收器2监听。可能的重复信号 Signal.send("student_updated", student_id=1, active=active) @r
Student
,然后我想更新他的注册
我想在学生更新后更新注册。但我的更新注册接收器在更新学生之前触发
发出信号。
接收器1
接收器2
不知何故,我的
接收器2
在接收器1
之前触发,因此无法在Django中明确指定信号的顺序
处理此问题的最佳方法是让接收器1信号本身发送一个信号,让接收器2监听。可能的重复信号
Signal.send("student_updated", student_id=1, active=active)
@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!")
@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)