Ram
Ram

Reputation: 29

How to update time field in django

This my table and here i want to update the end_time field

For that I get error while updating end_time field

07/May/2014 07:54:30] "POST /createxml/ HTTP/1.1" 500 13328

models.py

class JobDetails(models.Model):
    user_id=models.ForeignKey('UserDetails',null=True)
    job_name=models.CharField(max_length=45,null=True)
    start_time = models.TimeField(_(u"Job Start Time"), auto_now_add=True, blank=True,null=True)
    end_time = models.TimeField(_(u"Job End Time"), auto_now_add=True, blank=True,null=True)
    status=models.IntegerField(null=True)
    job_url=models.URLField(null=True)
    def __unicode__(self):
        return '%s%s%s%f%s%s' % (self.id,self.job_name,self.start_time,self.end_time,self.status,self.job_url)

Views.py

job_object=JobDetails.objects.get(pk=jobMaxId)
job_object.status=job_status
job_object.end_time=time.localtime(etime)
job_object.save();

Here it successfully update the status field but not end_time giving error

When I use sys.exc_info() , I got the following error.

import sys 
print sys.exc_info()
(<type 'exceptions.TypeError'>, TypeError('expected string or buffer',), <traceback object at 0xb93c098>)

Upvotes: 1

Views: 1985

Answers (1)

Mp0int
Mp0int

Reputation: 18727

You are using time with

import time
time.localtime(etime)

But django DateTimeField, and TimeField supports time module imported as

from datetime import time

Otherwise, you will get error bacause time formats do not match.

You must first change your time format to datetime...

from datetime import datetime
from time import mktime, time, localtime

end_time = localtime(etime)
datetime_time = datetime.fromtimestamp(mktime(end_time))  # Convert your time.struct_time to datetime.time

job_object.end_time = datetime_time
job_object.save()

Upvotes: 3

Related Questions