2010-05-22 3 views
0

나는 참 또는 거짓 그에 따라 내가 만든 객체가 실제로 생성되었는지 확인하고 반환 할 : 장고에서 개체 생성을 확인하는 방법?

obj = object(name='plop') 
try: 
obj.save() 
return True 
except ???: 
    return False 

가 어떻게 창조

을 검증 할 객체 수 있습니까? 모든

답변

2

첫째 - 그 예외가 발생할 수 있습니다 때

2 유일한 경우 일을하지 않은 좋은 습관이다는 경우 DB-백엔드에 .. 데이터베이스 연결이 실패하거나 일부 제약을하거나 필요한 필수 필드가 설정되어 있지 않습니다 .OperationalError는

업데이트

제기된다 제약을에 저장() 메소드가 있었는지 장고 1.2 같은 ValidationError 다른 예외를 제기 할 수 IntegrityError 예외 저장

+0

답변 해 주셔서 감사합니다. 내가 개선 할 수 있도록 잘못된 관행을 알려주시겠습니까? – Martin

+3

뭔가 나쁜 일이 생기고 False를 돌려주기 때문에 정확히 무슨 일이 벌어지는 지 전혀 알지 못합니다. (버그를 이해하는 데 많은 시간이 걸릴 것입니다.) - 그것에 대해 이야기하는 것이 많습니다. 경험이 풍부한 의사 나 의견을보세요. 개발자 –

+2

부울을 확인하는 대신 try 블록을 호출자로 이동시켜보십시오. 파이썬에서는 여러 가지 이유로 선호됩니다. 반환 값 검사는 C 프로그래밍 연습이며 일반적으로 예외 지원이있는 언어에서는 적절하지 않습니다. – Eloff

1

(), 또는 임의의 예외가 존재하지 재정의.

save()를 시도하고 예외를 잡는 데 특히 잘못된 것은 없습니다. 어떤 이유에서든 예외를 잡는 것보다 부울 반환 값을 확인하는 것이 더 좋을 경우 (일반적으로 파이썬에서 어떻게 수행되지 않았는지) 올바른 생각을 가지게됩니다. 단지 예외를 제외하고 ???를 제외한 변경 :

결국 예상되는 실패에 대해 False를 반환하려는 경우.

+0

감사합니다. 예 아이디어가 실패하면 그냥 False를 반환하는 것입니다. 왜 실패했는지는 중요하지 않습니다. 나는 예외의 이유를 기록 할 수 있다고 생각하지만, 참/거짓 결과는 나중에 xmlrpc를 통해 전송되며 사용자 화면에는 표시되지 않습니다. 나는 Exception을 제외하고 사용할 것이다. 감사합니다. – Martin

+0

그래, 그 예외 중 하나를 완벽하게 괜찮아 그 장소 중 하나입니다. django 1.2를 사용하는 경우 ValidationError 및 IntegrityError도 catch하고 xmlrpc를 통해 현명한 오류 메시지를 반환하거나 예외를 정렬 할 수 있습니다. – Eloff

관련 문제