Skip to main content
 首页 » 编程设计

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

2025年05月04日28dflying

我在 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_status 设置为时间戳(很像 t_modified)?请注意,t_status 可以为空。 t_status 通常会从 NULL 更改为字符串 approved 或 rejected。 user_status 是批准或拒绝此订单的人。

请您参考如下方法:

参见 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)