2011-02-02 3 views
2

여기에 멍청한. 그 테이블의 필드 중 하나에서 처리 된 것을 저장하고 싶은 모델 클래스가 있습니다. ModelManager를 사용하려고하지만 가능한지 또는 방법을 모릅니다.Django 모델 관리자는 사용자 정의 처리 된 데이터를 필드에 저장합니다.

각 게시물에 대한 맞춤 URL을 여기에 저장하고 싶습니다. 그래서 뭔가 (예 : 현재 시간)의 해시 계산하고 URL로 저장 PostManager 클래스에서 메서드를 갖고 싶습니다. 구문 도움말을 찾을 수 없으므로 여기에서 묻습니다.

class Post (models.Model): 
    name = models.CharField(max_length=1000, help_text="required, name of the post") 
    description = models.TextField(blank=True) 
    created_datetime = models.DateTimeField(auto_now_add=True, editable=False) 
    modified_datetime = models.DateTimeField(auto_now=True, editable=False) 
    custom_hashed_url = models.CharField(unique=True, max_length=1000, editable=False) 

def save(self, *args, **kwargs): 
     #How to refer to the custom_hashed_url in the Post class? 
     super(Model, self).save() 
+2

Self.custom_URL = calc_hash (datetime.now()). –

+0

감사합니다. Yuji. 귀하의 의견은 많은 도움이되었습니다. –

답변

3

URL을 나머지 정보와 함께 데이터베이스에 저장하려면 모델에 필드로 표시해야합니다.

URL을 적절한 필드 유형으로 변경하고 datetime 필드에서했던 것처럼 'editable'속성을 False로 설정하십시오. 이렇게하면 양식에 나타나지 않습니다.

그런 다음 모델의 저장 방법 (see Django docs)을 재정 의하여 게시물의 URL을 계산하고 인스턴스가 저장되면 자동으로 추가되도록 할 수 있습니다!

Model managers은 많은 인스턴스 또는 인스턴스 세트에서 작동하는 '모델 수준'상호 작용에 사용됩니다. 이 경우 단일 인스턴스를 조작하려고합니다. 우리는 필드를 사용하여 레코드의 데이터베이스에 정보를 저장하고 (이 경우에는 기본 동작에 연결하는 내장 메서드를 재정 의하여) 필드의 값을 계산합니다.

행운을 빈다.

+0

감사합니다 adamnfish. custom_hashed_url 필드를 참조하는 방법을 알려주시겠습니까? 'custom_hashed_url = models.CharField (unique = True, max_length = 1000, editable = False)'로 변경한다고 해봅시다. 'custom_hashed_url'에서 내 값을 저장하는 방법을 어떻게 알 수 있습니까? 나는 내 질문도 편집 할 것이다. –

+0

내 질문도 수정되었습니다. 당신의 도움을 주셔서 감사합니다. –

+2

save 함수는 Post 클래스의 * method *이어야합니다! (들여 쓰기). 그런 다음 self.custom_hashed_url은 url을 참조합니다. 당신은 (예를 들어) 현재 날짜를 해시 한 다음 그 URL을'self.custom_hashed_url = my_hash'로 설정할 수 있습니다. – adamnfish

관련 문제