【问题标题】:Set current time and date as default in django model在 django 模型中将当前时间和日期设置为默认值
【发布时间】:2020-08-05 15:40:55
【问题描述】:

如何将默认值设置为模型中的当前日期和时间?

我的模型是:

class StudUni(models.Model):
    student_id = models.IntegerField(blank=True, null=True)
    uni_name = models.CharField(max_length=55, blank=True, null=True)
    last_updated = models.DateTimeField(blank=True)

【问题讨论】:

    标签: django django-models orm python-datetime


    【解决方案1】:
    last_updated = models.DateTimeField(auto_now=True)
    

    For more info you can check here:

    【讨论】:

    • 这个解决方案很好,但不是我使用的时区,能否告诉我如何将其更改为 IST
    【解决方案2】:
    class StudUni(models.Model):
        student_id = models.IntegerField(blank=True, null=True)
        uni_name = models.CharField(max_length=55, blank=True, null=True)
        last_updated = models.DateTimeField(auto_now_add=True,blank=True)
    

    这将在保存时设置当前日期和时间

    【讨论】:

    • 您也可以使用 auto_now=True 代替 auto_now_add 。这将让您在调用保存函数时更新日期
    【解决方案3】:

    我建议您添加两个时间戳,一个 (date_created) 用于保存对象的创建日期(一次),另一个(date_updatedlast_updated)用于跟踪更新:

    试试下面的代码:

    from django.utils.translation import gettext_lazy as _
    
    [..]
    
    class StudUni(models.Model):
        student_id = models.IntegerField(blank=True, null=True)
        uni_name = models.CharField(max_length=55, blank=True, null=True)
    
        # timestamps
        date_created = models.DateTimeField(_('date created'), auto_now_add=True)
        last_updated = models.DateTimeField(_('last updated'), auto_now=True)
    

    【讨论】:

    • 能否解释一下_('date created') 在models.DateTimeField() 中的作用
    • 这个解决方案很好,但不是我使用的时区,能否告诉我如何将其更改为 IST
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-03
    • 2017-05-02
    • 1970-01-01
    相关资源
    最近更新 更多