Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何按顺序触发Django信号_Django_Django Orm_Django Signals - Fatal编程技术网

如何按顺序触发Django信号

如何按顺序触发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

我正在发射一个有3个不同接收器的信号。我想做的是使用信号更新一个表
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)