Django DateField 기본 옵션
날짜 시간 필드가있는 모델이 있습니다.
date = models.DateField (_ ( "Date"), 기본값 = datetime.now ())
내장 django 관리자에서 앱을 확인할 때 DateField에도 시간이 추가되어 저장하려고하면 오류가 반환됩니다. 기본값을 날짜로 만들려면 어떻게합니까? (datetime.today ()도 작동하지 않습니다)
그렇기 때문에 항상datetime
import datetime
datetime
해당 모듈 내의 클래스 대신 기본 모듈 :을 가져와야합니다from datetime import datetime
.
다른 실수는 실제로 기본값 인 ()
. 즉, 모든 모델은 클래스가 처음 정의 된 시점 의 날짜 를 얻습니다. 따라서 서버가 Apache를 다시 시작하지 않고 며칠 또는 몇 주 동안 유지되면 모든 요소가 초기 날짜와 동일하게됩니다.
따라서 필드는 다음과 같아야합니다.
import datetime
date = models.DateField(_("Date"), default=datetime.date.today)
날짜 모듈 대신 datetime 모듈을 사용하는 것이 실수입니다. 당신은 이것을하려고했습니다 :
from datetime import date
date = models.DateField(_("Date"), default=date.today)
현재 날짜 만 캡처하려는 경우이를 처리하는 적절한 방법은 auto_now_add 매개 변수를 사용하는 것입니다.
date = models.DateField(_("Date"), auto_now_add=True)
그러나 modelfield 문서 에는 auto_now_add 및 auto_now가 항상 현재 날짜를 사용하며 재정의 할 수있는 기본값이 아니라고 명시되어 있습니다.
date = models.DateTimeField(default=datetime.now, blank=True)
이것은 트릭을 수행해야합니다.
models.DateTimeField(_("Date"), auto_now_add = True)
당신은 또한 사용할 수 있습니다 lambda
. django.utils.timezone.now를 사용하는 경우 유용합니다.
date = models.DateField(_("Date"), default=lambda: now().date())
이 문제를 해결하는 더 좋은 방법은 datetime callable을 사용하는 것입니다.
from datetime import datetime
date = models.DateField(default=datetime.now)
괄호가 사용되지 않았습니다. 괄호를 사용한 경우 now()
함수를 한 번만 호출합니다 (모델이 생성 될 때). 대신 콜 러블을 인수로 전달하므로 모델의 인스턴스가 생성 될 때마다 호출됩니다.
Django Musings에 대한 크레딧 . 나는 그것을 사용했고 잘 작동합니다.
참고 URL : https://stackoverflow.com/questions/2029295/django-datefield-default-options
'Program Tip' 카테고리의 다른 글
단위 테스트 채택 (0) | 2020.11.03 |
---|---|
주석 필드의 기본 null 값을 설정하는 동안 오류가 발생했습니다. (0) | 2020.11.03 |
내 textview가 생략되었는지 어떻게 알 수 있습니까? (0) | 2020.11.03 |
Go 언어로 Unix 타임 스탬프 얻기 (기원 이후 현재 시간 (초)) (0) | 2020.11.03 |
XML에 새 줄 / 바꿈 태그 추가 (0) | 2020.11.03 |