2017-10-14 3 views
1

내 장고 모델에서 다음 필드가 있습니다입력 한 숫자가 DecimalField max_digits를 초과하면 왜 django pgm이 중단됩니까?

price = models.DecimalField(max_digits=8, decimal_places=2, default=0) 

및 내 양식에 다음 코드 :

price = forms.DecimalField(widget=forms.NumberInput(attrs={'step': '0.01', 'text-align': 'right;'})) 

(BTW, 텍스트 정렬이 작동하지 않습니다 - 다른 문제, I 생각)

양식으로 표시 될 때 작동합니다. 내가 같이, 너무 많은 숫자를 입력하면, 그러나

enter image description here

: 나는 2 개 이상의 소수 자릿수를 사용하려고하면 사실, 형태는 메시지를 팝업

enter image description here

장고는 다음과 같은 오류가 발생합니다 :

InvalidOperation at /balancer/set_security_prices/2017-10-14 []

Request Method: POST Request

URL: http://localhost:8000/balancer/set_security_prices/2017-10-14

Django Version: 1.9.1 Exception Type: InvalidOperation Exception

Value: [] Exception

Location: /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/db/backends/utils.py in format_number, line 200 Python Executable: /Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5 Python Version: 3.5.1

is_valid() 확인을 나는 데이터를 저장하는 함정에게 문제가되지 않습니다 전에 않습니다. 이것은 나에게 이해가되지 않는다. 장고가 이것을 막지 않아야하는데, 아니면 try ...except 코드를 추가해야합니까?

감사합니다.

답변

1

첫 번째 유효성 검사 오류가 브라우저에 의해 생성, 당신은 예를 들어 같은 효과 원하는 경우 입력에 최대 길이에 대한 유효성 검사를 추가해야합니다

price = forms.DecimalField(
    widget=forms.NumberInput(
     attrs={'step': '0.01', max='999999', 'text-align': 'right;'}) 
     #      ^^^^^^^^^^^^^ 
) 
+0

작품! max에 대한 구문은 'max': '999999'이지만 Django가 너무 많은 자릿수 오류를 생성하지만 너무 많은 자릿수 오류를 생성하지 않은 이유는 아직 확실하지 않습니다. 그것이해야하는 것처럼 보입니다. 도와 주셔서 감사합니다! – Ben

+0

잠깐, 아마도 '단계'가 많은 소수 자릿수 오류를 던지고 있습니다. 좋아, 내가 이제 좋아 보인다. 감사! – Ben

+0

기꺼이 도와 드리겠습니다. –