django: DateTimeField 현재 시간 설정
django의 모델을 만들 때 DateTimeField, DateField, TimeField 세 가지 종류가 날짜 필드를 만들 수 있으며, 그 값은datetime (),date (),time () 세 가지 대상에 대응한다.이 세 필드는 같은 매개 변수를 가지고 있습니다 autonow 및 autonow_add.
1.DateTimeField.auto_now
이 매개 변수의 기본값은false입니다.true로 설정되었을 때, 이 필드를 저장할 때 현재 시간으로 설정하고, 모델을 수정할 때마다 자동으로 업데이트됩니다.따라서 이 매개 변수는'마지막 수정 시간'을 저장해야 하는 장면에서 매우 편리하다.주의해야 할 것은 이 매개 변수를true로 설정할 때 필드의 기본값이 현재 시간임을 간단하게 의미하는 것이 아니라 필드가 현재 시간으로 강제적으로 업데이트되어 프로그램에서 수동으로 필드에 값을 부여할 수 없다는 것이다.만약django가 가지고 있는admin 관리자를 사용한다면 이 필드는admin에서 읽기만 합니다.
2.DateTimeField.auto_now_add
이 매개 변수의 기본값도 False입니다. True로 설정하면 모델 대상이 처음 만들어졌을 때, 필드의 값을 만들 때의 시간으로 설정하고, 나중에 대상을 수정할 때 필드의 값은 다시 업데이트되지 않습니다.이 속성은 일반적으로 생성 시간이 저장된 장면에서 사용됩니다.및 autonow 유사, autonow_add도 강제성을 가지고 있습니다. 트루로 설정되면 프로그램에서 수동으로 필드에 값을 부여할 수 없고, 관리자에서도 필드가 읽기만 합니다.
3. admin의 날짜 시간 필드
auto_now 및 autonow_dd가 True로 설정된 후, 이렇게 하면 필드가 editable=False와 blank=True의 상태가 됩니다.editable=False는 필드가 관리자에 나타나지 않도록 하고 blank=Ture는 폼에 값을 입력하지 않도록 합니다.이 때 관리자의fields나fieldset에 이 날짜 시간 필드를 강제로 추가하면 프로그램이 잘못되어admin을 열 수 없습니다.admin에서 대상을 수정할 때 날짜와 시간을 보려면 날짜 시간 필드를 admin 클래스의readonly 에 추가할 수 있습니다fields:
class YourAdmin(admin.ModelAdmin):
readonly_fields = ('save_date', 'mod_date',)
admin.site.register(Tag, YourAdmin)
4. 작성 시간을 기본 현재로 설정하고 수정할 수 있는 방법
그럼 문제 나왔습니다.실제 장면에서는 대상의 창설 시간이 기본적으로 현재 값으로 설정되기를 원할 뿐만 아니라, 나중에 그것을 수정하기를 원한다.어떻게 이런 수요를 실현합니까?
django의 모든 모델 필드는default 인자를 가지고 있으며 필드에 기본값을 설정합니다.default=timezone.now로 auto 대체now=True 또는 autonow_add=True.timezone.now 대응django.utils.timezone.now (). 따라서 다음과 같은 형식으로 작성해야 합니다.
from django.db import models
import django.utils.timezone as timezone
class Doc(models.Model):
add_date = models.DateTimeField(' ',default = timezone.now)
mod_date = models.DateTimeField(' ', auto_now = True)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.