A snapshot of what was going through my mind when I clicked “publish”
I’ve recently been playing around with the Django web framework (all non-techies should stop reading this at once). Here’s a little snippet of code that’s useful if you want to add a timestamp to a model you’re creating:
from datetime import datetime
class My_Model(models.Model):
date_created = models.DateTimeField()
date_modified = models.DateTimeField()
def save(self):
if self.date_created == None:
self.date_created = datetime.now()
self.date_modified = datetime.now()
super(My_Model, self).save()
What happens is that when you save the object, you override the Django save method with your own. It checks to see if the object has a date_created timestamp. If it doesn’t (i.e., you’re creating it for the first time), it adds one. It also updates the date_modified timestamp every time you save it.
You might be wondering: why not just set the model to look like this:
date_created = models.DateTimeField(default=datetime.now())
It won’t work due to a quirk in Python. Python will calculate “now” to be the time when the model is loaded into interpreted. This means that every single object, until you restart the server, will get exactly the same timestamp. Not too useful - so use this hack instead.
I'm fascinated by what happens at the margin of everyday life. That's the sort of stuff that tends to written about here. Expect some speculation, snippets of my life and the odd incoherent rant. Does the Internet get any better than this?
Leave a reply
You must be logged in to post a comment.