Automatic creation date for Django model form objects?
What's the best way to set a creation date for an object automatically, and also a field that will record when the object was last updated? models.py: created_at = models.DateTimeField(False, True, editable=False) updated_at = models.DateTimeField(True, True, editable=False) views.py: if request.method == 'POST': form = MyForm(request.POST) if form.is_valid(): obj = form.save(commit=False) obj.user = request.user obj.save() return HttpResponseRedirect('obj_list') I get the error: objects_object.created_at may not be NULL Do I have to manually set this value myself? I thought that was the point of the parameters passed to DateTimeField (or are they just defaults, and since I've set editable=False they don't get displayed on the form, hence don't get submitted in the request, and therefore don't get put into the form?). What's the best way of doing this? An __init__ method?
class MyModel(models.Model): created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True)
class TimeStampMixin(models.Model): created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) class Meta: abstract = True
Now anywhere you want to use it you can do a simple inherit and you can use timestamp in any model you make like.
class Posts(TimeStampMixin): name = models.CharField(max_length=50) ... ...
In this way, you can leverage object-oriented reusability, in Django DRY(don’t repeat yourself)
- Database Administration Tutorials
- Programming Tutorials & IT News
- Linux & DevOps World
- Entertainment & General News
- Games & eSport