是否可以在模型的添加/更改頁面上手動編輯自動日期時間字段。該字段定義爲:Django admin - 允許手動編輯自動日期時間字段
post_date = models.DateTimeField(auto_now_add=True)
post_updated = models.DateTimeField(auto_now=True)
我不知道如何手動中重寫這些將工作完全是在數據庫級別或在Django本身處理的自動更新?
是否可以在模型的添加/更改頁面上手動編輯自動日期時間字段。該字段定義爲:Django admin - 允許手動編輯自動日期時間字段
post_date = models.DateTimeField(auto_now_add=True)
post_updated = models.DateTimeField(auto_now=True)
我不知道如何手動中重寫這些將工作完全是在數據庫級別或在Django本身處理的自動更新?
auto_now_add=True
和auto_now=True
assumeeditable=False
。所以如果你需要糾正這個領域,不要使用它們。
在django級別自動更新句柄。例如,如果你更新了queryset,例如
Article.object.filter(pk=10).update(active=True)
不會更新post_updated
字段。但
article = Article.object.get(pk=10)
article.active = True
atricle.save()
會做
auto_now_add=True
和auto_now=True
承擔editable=False
。因此,如果您需要在管理員或其他任何ModelForm
中修改此字段,請不要使用auto_now_*=True
設置。
自動更新這些auto_now_*
字段在Django級別處理。
如果更新與auto_now_*=True
領域模型的實例,那麼Django會自動如果要覆蓋在Django這個自動行爲更新的領域,例如,
class Article(models.Model):
active = models.BooleanField()
updated = models.DateTimeField(auto_now=True)
article = Article.object.get(pk=10)
article.active = True
article.save()
# ASSERT: article.updated has been automatically updated with the current date and time
,你可以這樣做的通過queryset.update()更新實例,例如:
Article.object.filter(pk=10).update(active=True)
# ASSERT: Article.object.get(pk=10).updated is unchanged
import datetime
Article.object.filter(pk=10).update(updated=datetime.datetime(year=2014, month=3, day=21))
# ASSERT: article.updated == March 21, 2014
自動更新在Django級別的'DateTimeField'的'pre_save'方法中處理。 – okm 2012-04-21 16:30:41
一切皆有可能,但如果您能告訴我們您希望這些字段的行爲如何,它可能會更容易。我認爲''post_date''字段使用'default = datetime.datetime.now'會更好,並且可以在** Form **中調整post_updated字段的初始值。 – seler 2012-04-21 18:45:54