2013-11-26 2 views
3

장고 모델에서 "birthdate"라는 날짜 필드와 "lifespan"이라는 속성이 있습니다.Django 모델의 날짜 형식을 변경하십시오.

필드

birthdate = models.DateField(blank=True, null=True) 

재산권

@property 
def lifespan(self): 
    return '%s - present' % self.birthdate 

현재 수명은 "YYYY-MM-DD"형식으로 날짜를 반환합니다.

어떻게이 날짜 형식을 "mm/dd/yyyy"로 변경할 수 있습니까?

나는 필터가있는 장고 템플릿에서이를 수행하는 방법을 알고 있지만 장고 모델에서 사용할 수있는 유사한 "필터"가 있는지 알고 싶습니다.

의견에 감사드립니다. 전체 제어를 위해 admin.py

class PersonDetailAdmin(admin.ModelAdmin): 
    formfield_overrides = { 
     models.DateTimeField: {'input_formats': ('%m/%d/%Y',)}, 
    } 

답변

6

에 다음

말, 모델이 PersonDetail라고, strftime 사용 :

+0

완벽! 의견을 보내 주셔서 감사합니다. – bbrooke

0

아마 관리자를 오버라이드 (override)

@property 
def lifespan(self): 
    return '%s - present' % self.birthdate.strftime('%m/%d/%Y') 

strftime 아무튼를 Django의 date 필터가 사용하는 모든 서식 옵션이 없으므로 공동 작업자 중 하나가 필요하다면 자민련은 함수로 필터를 호출

from django.template.defaultfilters import date 

@property 
def lifespan(self): 
    return '%s - present' % date(self.birthdate, "n/j/Y") 
선도 0을 생략 할 것이다, 당신이 당신의 DATE_FORMAT 설정 변수 또는 다른 미리 정의 된 옵션을 사용 할 것

.

+1

이는 관리자가 이해할 수있는 입력 형식에 영향을 미치지 만 필드는 여전히 날짜 또는 datetime으로 저장되고 문자열 보간시 암시 된 'str'을 사용하여 렌더링됩니다. –

+0

알았어요. 나는 양식장에서 그런 것을 사용했고 그것이 효과가있을 것이라고 생각했습니다. 감사 !! – user2707389

관련 문제