如何在Django中建模TimeField?

Hou*_*man 15 django

我已经建模了一个名为ConversationHistory的类.每当创建实例时,我希望设置当前日期和当前时间.

class ConversationHistory(models.Model):
    contact_date        = models.DateField(_(u"Conversation Date"),      blank=True)
    contact_time        = models.DateTimeField(_(u"Conversation Time"),  blank=True)

    def __init__(self, *args, **kwargs):
        super(ConversationHistory, self).__init__(*args, **kwargs)
        self.contact_date    = datetime.datetime.now()
        self.contact_time    = datetime.datetime.now()
Run Code Online (Sandbox Code Playgroud)

这个想法是用户以后仍然可以将日期和时间调整为两个不同的字段.

我现在有点迷失如何使时间字段只显示和接受时间,而不是日期和时间.我认为不可能没有日期时间的时间字段,但那么我如何只显示表单中的时间?

Cés*_*sar 27

如果您只想要时间,TimeField就是您所需要的:

class ConversationHistory(models.Model):
    contact_date = models.DateField(_(u"Conversation Date"), blank=True)
    contact_time = models.TimeField(_(u"Conversation Time"), blank=True)
Run Code Online (Sandbox Code Playgroud)

您可以利用该auto_now_add选项:

class TimeField([auto_now = False,auto_now_add = False,**options])

一个时间,由datetime.time实例在Python中表示.接受与DateField相同的自动填充选项.

如果使用auto_now_add,则在首次创建对象时,它将自动将字段设置为now.

class ConversationHistory(models.Model):
    contact_date = models.DateField(_(u"Conversation Date"), auto_now_add=True, blank=True)
    contact_time = models.TimeField(_(u"Conversation Time"), auto_now_add=True, blank=True)
Run Code Online (Sandbox Code Playgroud)

  • 我应该使用default = datetime.datetime.now而不是auto_now_add,问题是你无法覆盖auto_now_add (2认同)