There has been some discussion about removing auto_now and auto_now_add some time ago. auto_now_add can be replaced be using a callable default value, auto_now can't. So I wrote this litte function for my current project (older ones still use auto_add) to fill the gap...but I'm not sure if auto_now will be removed at all.
1 2 3 4 5 6 7 8 | # Takes model and fieldname and sets field to current datetime on pre_save
def auto_now_on_save(model, fieldname):
from django.db.models import signals
from django.dispatch import dispatcher
def _update_datefield(instance):
from datetime import datetime
setattr(instance, fieldname, datetime.now())
dispatcher.connect(_update_datefield, signal=signals.pre_save, sender=model, weak=False)
|
More like this
- Form field with fixed value by roam 6 days, 9 hours ago
- New Snippet! by Antoliny0919 1 week, 5 days ago
- Add Toggle Switch Widget to Django Forms by OgliariNatan 3 months ago
- get_object_or_none by azwdevops 6 months, 3 weeks ago
- Mask sensitive data from logger by agusmakmun 8 months, 2 weeks ago
Comments
It's good to know that for now that Django's signals are a fairly large performance hit. To remedy this, you can simply do this:
It's one more line than if you import your solution and apply it to a field, but doesn't incur the performance penalty that signals currently entail.
#
Please login first before commenting.