django 模型 时间戳管理

auto_now_add为添加时的时间,更新对象时不会有变动。

auto_now无论是你添加还是修改对象,时间为你添加或者修改的时间。

有 这两个参数 的字段,也会继承 editable=False,所以在 django admin 不会显示他们。

 auto_now 用不好,所以不使用这两个参数,改而自己管理。

一个小例子:

# -*- coding=utf-8 -*-
# Created Time: 2016年04月14日 星期四 15时21分10秒
# File Name: 09_models_save.py

'''
模型 定义 及 sava()方法
'''

from __future__ import unicode_literals

from django.db import models
from django.utils import timezone
from django.contrib.postgres.fields import JSONField, ArrayField
from django.utils.encoding import python_2_unicode_compatible


@python_2_unicode_compatible
class Order(models.Model):
    ''' 订单表 '''

    # 订单号
    order_id = models.BigIntegerField(db_index=True)
    # 违约金
    penalty  = models.FloatField(default=0.0)
    # 订单创建时间
    created  = models.DateTimeField()
    # 订单更新时间
    updated  = models.DateTimeField()

    class Meta:
        ordering = ['-updated']
        unique_together = ('order_id',)

    def __str__(self):
        return str(self.order_id)

    def save(self, *args, **kwargs):
        ''' On save, update timestamps '''
        if not self.id:
            self.created = timezone.now()
        self.updated = timezone.now()
        return super(Order, self).save(*args, **kwargs)



你可能感兴趣的:(django)