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

僤鯓⒐⒋嵵緔 提交于 2020-01-10 19:35:10

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!