【问题标题】:How to trigger Django Signals in sequence如何按顺序触发 Django 信号
【发布时间】:2017-05-19 07:06:41
【问题描述】:

我正在发射一个具有 3 个不同接收器的信号。我想做的是使用信号update_student 更新表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 2Receiver 1 之前触发了。

【问题讨论】:

标签: django django-orm django-signals


【解决方案1】:

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

处理此问题的最佳方法是让 Receiver 1 信号自己发送一个信号,您可以让 Receiver 2 监听该信号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-29
    • 2012-07-31
    • 2011-09-21
    • 2014-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多