如何在设置或更改类的属性时在Django中设置时间戳

时间:2012-02-25 06:26:17

标签: python django

我在models.py中有以下(简化)课程:

class Order( models.Model ) :
    status       = models.CharField( max_length = 135, blank = True )
    t_status     = models.DateTimeField( null = True, blank = True )
    user_status  = models.ForeignKey( User, null = True, blank = True )
    t_created    = models.DateTimeField( auto_now_add = True )
    t_modified   = models.DateTimeField( auto_now = True )

t_status的值发生变化时,如何将t_modified设置为时间戳(非常类似于t_status)?请注意,t_status可以为空。 t_status通常会从NULL更改为字符串approvedrejecteduser_status是批准或拒绝此订单的人。

1 个答案:

答案 0 :(得分:1)

请参阅django-dirtyfields

class Order(DirtyFieldsMixin, models.Model):
    ...

def order_pre_save(sender, instance):
    if "status" in instance.get_dirty_fields():
        instance.t_status = datetime.datetime.now()

pre_save.connect(order_pre_save, sender=Order)