0

모델 데이터에서 전환을 제어하는 ​​방법에 대해 궁금합니다. 나는 How to check value transition in Django (django-admin)?에서 해결책을 발견하지만 난 내 코드 내에서 구현하려고 할 때, 뭔가 잘못 (내가 처벌과 상태를 변경할 수 있어요) :장고 (django-admin)에서 가치 전이를 확인하는 방법은? (Revisited)

# Blog Entry Draft Status Constants 
ENTRY_STATUS_DRAFT = 0 
ENTRY_STATUS_PUBLISHED = 1 

# Create your models here. 
class Blog(models.Model): 
    title = models.CharField(max_length=200, unique=True) 
    body_html = models.TextField(blank=True) 
    pub_date = models.DateTimeField ('Date Published', blank=True, null=True, editable=False) 
    PUB_STATUS = (
     (ENTRY_STATUS_DRAFT, 'Draft'), 
     (ENTRY_STATUS_PUBLISHED, 'Published'), 
    ) 
    status = models.IntegerField(choices=PUB_STATUS, default=0) 

    def clean(self): 
     # Don't allow draft entries to have a pub_date. 
     if self.status == 'draft' and self.pub_date is not None: 
      raise ValidationError('Draft entries may not have a publication date.') 
     # Set the publication date for published items if it hasn't been set already 
     if self.status == ENTRY_STATUS_PUBLISHED and not self.pub_date: 
      self.pub_date = datetime.datetime.now() 

    def clean_status(self): 
     status = self.cleaned_data.get('status') 
     if status == ENTRY_STATUS_DRAFT: 
      if self.instance and self.instance.status == ENTRY_STATUS_PUBLISHED: 
       raise ValidationError('You cannot change published to draft') 
     return status 
: 여기

내 코드의 관련 부분이다

clean() 메서드가 작동합니다. 나는 또한 '게시 됨'및 '초안'clean_status() 메서드를 사용하여 시도했지만 그 작동하지 않았다.

깨끗한 상태로 올바른 위치에 놓고 있습니까? 나는 무엇인가 내려다보고 있냐?

답변

0

깨끗한 방법은 clean_statusself.cleaned_data['status']을 반환하는 것처럼 self.cleaned_data을 반환해야합니다. :)

+0

방금 ​​시도했습니다 ... 작동하지 않았습니다 ... 오류가 발생했습니다 : " 'Blog'객체에는 'cleaned_data'속성이 없습니다." 추적 기록 : http://dpaste.com/232983/ –