나는 모두 null = True가 정의 된 4 개의 필드가있는 모델을 가지고 있습니다. 전적으로 null 모델의 생성을 막고 싶습니다. 나는 이것이 기본 관리자와 함께 작동하기 때문에 양식 검사기를 사용하지 않을 것입니다.모델의 하나 이상의 필드가 지정되도록하는 가장 좋은 방법은 무엇입니까?
check() 메서드를 재정의하면 오류가 발생합니까?
나는 모두 null = True가 정의 된 4 개의 필드가있는 모델을 가지고 있습니다. 전적으로 null 모델의 생성을 막고 싶습니다. 나는 이것이 기본 관리자와 함께 작동하기 때문에 양식 검사기를 사용하지 않을 것입니다.모델의 하나 이상의 필드가 지정되도록하는 가장 좋은 방법은 무엇입니까?
check() 메서드를 재정의하면 오류가 발생합니까?
정말 인상 할 수있는 것은 당신에게 달려 있습니다. 이 경우 ValueError가 적합 할 수 있습니다.
나는 save()
메서드에 넣을 것이다. 그런 다음 해당 모델에서 save를 호출하는 모든 곳에서 시도하거나 catch 할 수있는 사용자 정의 오류를 만듭니다.
class EmptyModelDetected(Exception):
pass
# Then in your save method
def save(self, *args, **kwargs):
if self.field1 or self.field2 or self.field3 or self.field4:
super(Model, self).save(*args, **kwargs)
else:
raise EmptyModelDetected()
# Then, wherever you call save
try:
m.save()
except EmptyModelDetected:
# handle the error
ValueError가 적합 할 수도 있지만 다른 이유로 인해 발생할 수 있습니다. 사용자 정의 오류를 만들면 해당 오류를 잡을 수 있습니다. – sheats
나는 당신 자신의 예외를 만드는 것이 더 좋은 생각이라고 동의한다. 'NullModelError' 또는 이와 동등하게 기술 된 예외를 생성하면 특정 예외를 잡을 수 있습니다. – jathanism