0

모델 및 양식의 유효성 검사에 대한 몇 가지 질문이 있습니다. 다음과 같이 나를 도울 수 있습니까?모델 및 양식의 유효성 확인에 대한 도움말


유효성 검사는 어디에서 수행해야합니까? 모델 또는 양식에 있어야합니까? 이것에 대해 올바른 방법은 형식의 유효성 검사기와 모드의 제약 조건을 갖는 것입니까?


형태의 'clean_'방법을 기입 및 검증을 작성 차이점은 무엇인가? 사람들은 종종 'clean_'메소드에 유효성 검사를 적용하는 것을 보았습니다.


내가 처리하고있는 요청에서 '살아있는'URL 문자열에 param이 있습니다. 이것은 일반적으로 1 또는 0입니다 내 양식에서 이것을 정의하는 올바른 방법은 무엇입니까? 그것이 유효 함을 입증 할 필요가 있고 단지 1 또는 0 일 수 있습니다. 이것이 올바른 방법입니까?

alive = models.IntegerField(null=False, max_value=1, min_value=0) 

이 필드의 기본값을 정의하는 방법, 즉이 매개 변수가 전달되지 않으면 기본적으로 0 (거짓)입니다.

클라이언트 측에 양식이 없습니다. 장고 양식을 사용하여 JS POST 요청의 유효성을 검사합니다.


모델 필드 중 하나에서 화면 해상도를 1234x4321 형식으로 저장해야합니다. 이것을 CharField으로 지정해야합니까? 에 정규 표현식 유효성 검사를 추가해야합니까? 모델과 양식 모두? 정규 표현식 검증의 예가 도움이 될 것입니다.


감사합니다.

답변

1

유효성 검사는 모델이 아닌 양식에서 수행해야합니다. 그러나 일반적으로 많은 의미가있는 ModelForms를 사용하는 경우 모델 자체에서 유효성 검사 규칙 중 일부를 상속받습니다 (데이터베이스 필드 유형, 최대 필드 길이, 데이터베이스 필드 유형 등). 왼쪽 빈칸).

form = SomeForm(initial={'alive' : 0}) 

귀하의 경우하지만, 얻을 수있는 값은 0과 1이 있다면, 그것은 의미가 될 것이라고 나타납니다

필드의 디폴트 값은 생성자로 전달되어야합니다 대신 BooleanField을 사용하십시오 (이 경우 기본값은 false입니다).

해상도의 경우 가능한 해상도와 임의의 값 사이의 매핑을 만듭니다.

RESOLUTIONS = (            
     ("1","800x600"), 
     ("2","1024x768"),        
     .....       
) 

다음 모델로 전달 : 사용자가 해당 옵션과 값으로 선택 필드를 얻을 수

resolutions = models.CharField(RESOLUTIONS, max_length=1) 

그래서. 한편, 사용자가 자신을 삽입해야하는 경우 두 입력란 (너비에 하나, 높이에 다른 하나)을 사용하면 사용자 입력의 유효성을 검사하는 것보다 훨씬 쉬울 것입니다.

그래서 당신은 모델하는 방법을 정의 할 수 있습니다 :

def get_resolution(self): 
    return "%sx%s" % (self.width, self.height) 
+0

안녕 Uku을, 나는 때문에 우리의 경우 우리 조합의 많은에 XXXXXXXXX 형식의 해상도를 저장하고 싶습니다. 어떤 종류의 유효성 검사 및 제약 조건을 구현할 필요가 있는지 알려주시겠습니까? 감사. –

+0

글쎄, 물건을 지나치게 복잡하게 만들 필요가 없습니다. 단지 다른 필드에 저장하십시오. 하나는 높이 용이고 다른 하나는 너비 용입니다. –

+0

안녕하세요 우 쿠, 네 말이 맞아. 또 다른 것은 : 나는 JS 요청을 받아 장르의 모델에 데이터를 저장하는 Django 앱을 가지고있다. 이것을 게시하는 클라이언트 양식은 없습니다. 물건을 계산하고 장면 뒤에서 요청을하는 것은 JS입니다. 필요한 것은 전체 요청에 대해 하나의 Form을 작성하고 양식의 save 메소드를 대체하고 데이터를 각각의 모델에 저장하는 로직을 추가하십시오 directort - 또는 - 데이터가 필요한 각 모델에 대해 개별 ModelForm을 작성하십시오 구원 받습니까? –