2011-08-30 6 views
2

django-stdimage2을 사용하여 프로젝트의 이미지 이름을 바꾸거나 크기를 조정합니다. 장고 관리자 인터페이스를 통해 이미지를 삭제할 수있는 기능이 있습니다 : 확인란을 선택하고 저장을 클릭하기 만하면됩니다.Django : 유니 코드로 강제 변환 안 함 유형을 찾았습니다.

내가 성공적으로 장고 관리자를 사용하여 이미지를 추가 할 수 있지만, 나는이 오류가 반환 된 이미지를 삭제하려고하면

오류 메시지

형식 오류에서/관리자/응용 프로그램/gear_images/1/
는 유니 코드로 강요 : 필요 문자열 또는 버퍼, NoneType 발견

모델

class gear_images(models.Model): 
    def __unicode__(self): 
     return self.image.name 

    gear_id = models.ForeignKey(gear) 
    image = StdImageField(upload_to='images/gear', blank=True, size=(640, 480, True), thumbnail_size=(100, 100, True)) 
    description = models.CharField(max_length=100) 

가능한 원인

나는 이미지가 이미 데이터베이스에서 삭제 되었기 때문에 오류가 반환됩니다 가정, 그래서 반환 아무것도 없다.

수정?

이 상황을 정확히 코딩하는 방법은 무엇입니까?

편집 : 해결책을 찾았습니다. 고마워, 바네사! 이미지가 없기 때문에

def __unicode__(self): 
    if self.image is None: 
     return "None" 
    elif self.image.name is None: 
     return "None" 
    else: 
     return self.image.name 

이 작동하지 않을 유니 코드에 "없음"(A NULL 항목) 변환하지 위해 노력하고,

답변

5

:-) 주셔서 감사합니다. 다음을 사용하여 테스트 할 수 있습니다.

def __unicode(self)__: 
    if self.image is None: 
     return "None" 
    else: 
     return self.image.name 
+0

감사합니다. 바네사! 위의 편집을 참조하십시오. 좋은 해결책이라고 생각하십니까? –

+0

먼저 self.image가 None인지 확인한 다음, 그렇지 않으면 self.image.name이 None인지 확인하여 정말로 안전합니다. self.image가 None 인 경우 self.image.name과 같은 것이 없으므로 (None에는 속성이 없으므로) self.image.name을 확인하려고해도 오류가 발생합니다. –

+0

고마워, 또! 위의 코드를 수정했습니다. –

관련 문제