我的信号处理有什么问题?

时间:2016-01-12 10:14:35

标签: django django-models

我有这个:

public Guitest()
{
    setSize(300,300);


    // create a JDialog that make guitest wait
    MyDialog dlg = new MyDialog();
    dlg.setSize(100,100);
    dlg.setVisible(true);

    while(dlg.isWait())
    {
        try
        {
            Thread.sleep(1000);
        } catch (InterruptedException ex)
        {
            Logger.getLogger(Guitest.class.getName()).log(Level.SEVERE, null, ex);
        }
        System.out.println("waiting mydialog");
    }


}


class MyDialog extends JDialog
{
    boolean wait = true;
    JButton btn = new JButton("OK");

    public MyDialog()
    {
        setSize(50,50);

        btn.addActionListener(new ActionListener()
        {

            @Override
            public void actionPerformed(ActionEvent e)
            {
                wait=false;
            }
        });
        add(btn);
    }

    public boolean isWait()
    {
        return wait;
    }
}

这很有效......直到我添加另一个这样的接收器:

class PersonneRelation(models.Model):
    #blabla
    pass


@receiver(post_save, sender=PersonneRelation)
def signal_receiver(sender, **kwargs):
    print('***'*5)
    print(sender)

它不是同一个发送者,所以它应区分这两个信号......但是一旦我添加了前一个信号,它似乎会覆盖第一个信号,而第一个信号永远不再被调用。我错过了什么?

1 个答案:

答案 0 :(得分:0)

您已经定义了两个具有相同名称的方法,基本上您无法在同一py文件中的python中执行此操作。

我更喜欢按照以下方式初始化我的信号,因为它更明确地表达了他们所做的事情,但只要你给他们单独的方法名称你就可以了

post_save.connect(do_something_with_travel, sender=PersonneTravel)
def do_something_with_travel(sender, **kwargs):
    created = kwargs['created']
    obj = kwargs['instance']
    print('***'*5)
    print(sender)
    print(created)