Как установить метку времени в Django, когда атрибут класса установлен или изменен - PullRequest
2 голосов
/ 25 февраля 2012

У меня есть следующий (упрощенный) класс в 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 на строку approved или rejected.user_status - это лицо, которое одобряет или отклоняет этот заказ.

1 Ответ

1 голос
/ 25 февраля 2012

См. 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...