仅在更新模型的现有记录时执行命令

时间:2016-08-20 23:08:38

标签: django

我在下面有这个model.py.我只需要在更新记录时执行某些操作,而不是为Target模型创建(例如,当我通过admin更新Target.Name时)。到目前为止,以下代码仅在我创建新的Target记录时执行,而不是更新现有记录。花了一天时间......

def create_badge(sender,instance,created,** kwargs):

float

class Target(models.Model):

$winders = $(window);  $josia = $(".josianne");

$winders.scroll( 

    function( )
    {
        var scrolledFromtop = $winders.scrollTop();

        if( scrolledFromtop > 300 )
        {
            $josia.text("LOWBWNOW");  // change it to $(".josianne")
        }
        else
        {
            $josia.text("DOZO, NAT, SARA"); // change it to $(".josianne")
        }
    }

);

signals.post_save.connect(create_badge,sender = Target)

1 个答案:

答案 0 :(得分:0)

在模型上使用自定义save()方法。然后你可以利用这样一个事实:当实例被修改时,它已经有id,但是如果它正在被创建它还没有(因为id被分配了它第一次保存)。因此,只有在已经有id时才设置要调用的函数。例如:

class ModelName(models.Model):
    ...

    def save(self):
        if self.id:
            do_something_here()
        super(ModelName, self).save()