2010-08-19 3 views
1

CharField를 사용자 정의 유니 코드 메소드로 서브 클래 싱하려고합니다. 기본적으로, 기본 모델 필드에 의해 반환되는 값에 내 사용자 지정 암호화 메서드를 호출 할 수 있어야합니다. 다음과 같은 시도했지만 관리자가 다른 방법으로 값을 받고있는 것 같습니다. 이것을 구현하는 가장 파이썬적인 방법이 될 것 같지만 아마도 틀 렸습니다.#django admin에서 모델 필드를 나타내는 데 어떤 메소드가 사용됩니까?

def PasswordCharField(models.CharField): 
    def __unicode__(self): 
     return crypt(super(PasswordCharField,self).__unicode__()) 
+0

[비밀번호 입력] (http://docs.djangoproject.com/en/dev/ref/forms/widgets/#django.forms.PasswordInput)을 사용하지 않는 이유는 무엇입니까? –

+0

검증 인터페이스가 아닌가? – Ryan

+0

당신은 실제로 암호화하려고합니까? 관리자 목록 인터페이스의 필드 표시? 변경 양식의 입력란에 표시된 값은 무엇입니까? 데이터베이스에 저장된 값은? –

답변

1

난 아직도 당신이 출력의 필드 암호화하려는 이유를 정말 확실하지 않다 - 매우 안전하지 않는 것, (장고 자신의 암호 필드에 의해 촬영) 일반적인 접근 방식은 데이터를 해시하는 것입니다 데이터베이스에 해싱 된 버전을 저장하고 저장하십시오.

그러나이 경로를 사용하려는 경우 사용자 정의 필드 하위 클래스에 __unicode__을 사용할 이유가 없습니다. 이 문서에는 장고의 어떤 부분 (관리자 가든 다른 것이 든)이 필드의 가치를 얻는 데 사용한다는 것을 암시하는 내용은 없습니다. 실제로 admin은 필드의 값을 다른 것으로 가져 오는 것과 동일한 메소드를 사용합니다.

Custom field subclasses은 내용 페이지에서 링크 된 설명서에 완전히 설명되어 있습니다. 당신이하려고하는 것을 실제로 이해하지 못한다면 말하기가 어렵지만, to_python 방법이 필요한 것일 수 있습니다. 그러나 이것이 장황한 지역에서 의 사용에 영향을 줄 것이라는 점을 명심하십시오.

관련 문제