【问题标题】:In Django ,how can I save or update datetime of datetime field with db time?在 Django 中,如何使用数据库时间保存或更新日期时间字段的日期时间?
【发布时间】:2015-08-22 14:31:50
【问题描述】:

db "T" 与一个具有日期时间字段的表,例如,

CREATE TABLE `exec_job` (
  `job_id` int(11) NOT NULL AUTO_INCREMENT,
  `status` int(11) NOT NULL,
  `create_time` datetime NOT NULL,
  `finish_time` datetime NOT NULL,
  PRIMARY KEY (`job_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

在一台机器上,例如机器IP为192.168.0.100。

我的 Django 应用程序“M”在另一台机器上,例如机器IP为192.168.0.200, 应用 M 使用 db T。

当我将数据保存或更新到 db 时,我发现“create_time”字段和“finish_time”字段使用 192.168.0.200 的时间来保存。 而,如何在我的 Django 应用代码中使用数据库时间保存或更新日期时间字段的日期时间?

模型类是这样的:

class ExecJob(models.Model):
    JobId       = models.AutoField(db_column = "job_id", primary_key = True)
    Status      = models.IntegerField(db_column = "status", default = 0)
    CreateTime  = models.DateTimeField(db_column = "create_time", auto_now_add = True)
    FinishTime  = models.DateTimeField(db_column = "finish_time", auto_now = True)
    class Meta :
        db_table = "exec_job"

应用代码如下:

jobobj = ExecJob(
    #JobId = models.AutoField(db_column = "job_id", primary_key = True)
    Status      = 0,
    #CreateTime = ,               # be commented
    #FinishTime = timezone.now(), # be commented
)
jobobj.save()

【问题讨论】:

    标签: python mysql django datetime


    【解决方案1】:

    您可以在模型类中创建以下方法

    def save(self, *args, **kwargs):
        if not self.id:
            self.CreateTime = datetime.datetime.now()
        self.FinishTime = datetime.datetime.now()
        return super(ExecJob, self).save(*args, **kwargs)
    

    【讨论】:

    • "datetime.datetime.now()" 可以得到 192.168.0.100 的时间吗?@Vikas Neha Ojha
    • 不,抱歉。我有点糊涂了。让我再处理一遍并发布适当的答案。
    • 你想只通过应用程序来做吗?你能在数据库中设置一些默认值吗?
    • create_time可以使用自动更新,但是finish_time需要实时更新,不知道mysql DB能不能实现这个功能。
    • “create_time”可以在数据库中设置,“finish_time”需要在app中更新。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-16
    • 2011-09-06
    • 2013-12-12
    • 1970-01-01
    • 2012-02-27
    相关资源
    最近更新 更多