2016-03-31 69 views
0

在我的Django网站上,我保存了用户的反应,所以当用户单击按钮时,我将其存储为创建时间,并且当用户第二次单击它时,我将时间存储为完成时间等等。这是我的模型;存储时间差异Django

class UserStatus(models.Model): 
    STATUS_TYPES = (
     ('online', 'online'), 
     ('offline', 'offline')  
    ) 

    user = models.ForeignKey(User) 
    status_type = models.CharField(max_length=30, choices=STATUS_TYPES, default='online') 
    created_time = models.DateTimeField(auto_now_add=True) 
    finish_time = models.DateTimeField(blank=True, null=True) 
    time_diff = models.DateTimeField(blank=True, null=True) 

我添加了time_diff来显示created_time和finish time之间的时间差。当我在shell中尝试一个例子时,我使用;

user_status.created_time 
datetime.datetime(2016, 3, 31, 12, 50, 21, tzinfo=<UTC>) 
user_status.finish_time 
datetime.datetime(2016, 3, 31, 12, 51, 37, 998593, tzinfo=<UTC>) 
user_status.finish_time - user_status.created_time 
datetime.timedelta(0, 76, 998593) 

一切似乎是罚款,直至现在,然而,当我写user_status.save()它给了一个错误;

line 93, in parse_datetime match = datetime_re.match(value) TypeError: expected string or buffer

我不明白为什么会出现这样的错误。

预先感谢您。

回答

1

现在您尝试使用DateTimeField,但此字段只能用于存储日期和时间(但不包括时间差)。您应该使用DurationField来存储timedelta。

+0

谢谢你解决了我的问题。其实我不知道“DurationField”:),并认为它是一个解析器问题或类似的东西:) – waterkinq