Mehmet Kagan Kayaalp
Mehmet Kagan Kayaalp

Reputation: 565

Storing Time Difference Django

On my Django site, I am saving a user's reactions so when a user clicks a button, I store it as a created time and when the user clicks it second time, I stored the time as a finish time and so forth. Here it is my model;

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)

I added time_diff to show the time difference between created_time and finish time. When I try an example in the shell, I use;

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)

Everything seems to be fine until now, however when I wrote user_status.save() it gave an error;

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

I did not understand why it gave such an error.

Thank you in advance.

Upvotes: 0

Views: 877

Answers (1)

Arseny
Arseny

Reputation: 5179

Now you try to use DateTimeField, but this field can only be used for storing date and time (but not time difference). You should use DurationField for storing timedelta.

Upvotes: 1

Related Questions