问题
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?
回答1:
The correct fix is to pass a callable as the field's default
that returns the appropriate datetime, e.g. datetime.datetime.now
.
回答2:
auto_now
and auto_now_add
are considered harmful, because you have absolutely no way to change the value via django (say for example, in the admin interface).
This is an inconsitency with other flags, and django people generally don't like that sort of magic.
来源:https://stackoverflow.com/questions/10195020/why-does-django-lint-tell-me-the-auto-now-add-is-deprecated