21

我已经为一个名为 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()

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

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

4

1 回答 1

36

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

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

您可以利用以下auto_now_add选项:

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

一个时间,在 Python 中由 datetime.time 实例表示。接受与 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)
于 2012-07-08T19:01:01.993 回答