Search code examples
pythondjangodatetimelast-modifiedpylint

Why does django-lint tell me the `auto_now_add` is deprecated?


Hi fellow Djangonauts:

I checked my project with django-lint, and it yields:

W:211,16:MyModel: timestamp: Uses superceded auto_now or auto_now_add

The commit message:

auto_now/auto_now_add not technically deprecated, but they still suck.

Why do they say auto_now/auto_now_add "suck"? I had no problem implementing the created/last-updated pattern with these two field parameters.

Is there a better approach for this pattern? Custom Field classes? And why (if this approach is better) it hasn't been integrated into Django?


Solution

  • The correct fix is to pass a callable as the field's default that returns the appropriate datetime, e.g. datetime.datetime.now.