Django에서 FloatField를 소수점 이하 2 자로 제한하는 방법을 찾고 있습니다. 누구나 DecimalField를 사용하지 않고도이 작업을 수행 할 수있는 방법을 알았습니다.django FloatField를 소수 2 자리로 제한
decimal_places=2
을 시도했지만 이것은 float 필드 내에서 마이 그 레이션 오류가 발생했기 때문에이 메서드는 DecimalFields 내에서만 작동해야한다고 생각합니다.
Django에서 FloatField를 소수점 이하 2 자로 제한하는 방법을 찾고 있습니다. 누구나 DecimalField를 사용하지 않고도이 작업을 수행 할 수있는 방법을 알았습니다.django FloatField를 소수 2 자리로 제한
decimal_places=2
을 시도했지만 이것은 float 필드 내에서 마이 그 레이션 오류가 발생했기 때문에이 메서드는 DecimalFields 내에서만 작동해야한다고 생각합니다.
FloatField
이 양식에 나타나는 방식에만 관심이있는 경우 템플릿 필터 floatformat
을 사용할 수 있습니다. 장고 문서에서
숫자 정수 인수와 함께 사용할 경우, floatformat는 많은 소수 자릿수로 숫자를 반올림합니다.
값 = 34.23234, 다음 템플릿에서 예를 들어, :
def validate_decimals(value):
try:
return round(float(value), 2)
except:
raise ValidationError(
_('%(value)s is not an integer or a float number'),
params={'value': value},
)
:
{{ value|floatformat:2 }} # outputs 34.23
그게 전부는 아니지만 내가 찾고있는 것이지만 이것은 당신의 도움을 위해 미래의 프로젝트에 도움이 될 것이라고 확신합니다. . –
이것은 도움이됩니다. 나는 장고'FloatField (기본값 = 0.00) '로 Postgres를 사용하고 있지만, 쓸모없는'0 '을 소수점 이하 자리에서 제거하여'0 '으로 저장하고있다. 의미있는 것이지만 일관된 값인'0.00' 또는' 5.43' 템플릿에서 ... {{value | floatformat : 2}}'트릭을 수행했습니다. –
내 [answer] (https://stackoverflow.com/questions/23739030/restrict-django-floatfield-to-2- 소수점 이하 자리수/46081058 # 46081058)를 사용하여 데이터 필드가 항상 데이터베이스 수준에서 두 개의 소수로 반올림되도록합니다. –
장고 때문에 당신은 FloatField에 대한 사용자 지정 유효성 검사기/또는 ModelFields을 사용할 수 있습니다 1.8 이상 ... 그리고 모델에서 다음과 같이 적용 할 수 있습니다.
from django.db import models
class MyModel(models.Model):
even_field = models.FloatField(validators=[validate_decimals])
이것은 작동하지 않습니다. 유효성 검사기는 저장되는 값을 변경하지 않고 값이 수용 가능한지 확인합니다. 값이 받아 들여지지 않으면 예외가 발생해야합니다. 저장중인 값은 수정되지 않습니다. –
float 필드가 소수 둘째 자리를 반올림하게하는 대답은 아래의 내 대답을 참조하십시오. –
템플릿의 모델 표현을 변경하는 대신 모델이 항상 소수점 이하 두 자리 만 저장되도록하려면 모델의 사용자 정의 저장 방법이 효과적입니다. 아래의 예제 모델은 방법을 보여줍니다.
class MyDataModel(models.Model):
my_float = models.FloatField()
def save(self, *args, **kwargs):
self.my_float = round(self.my_float, 2)
super(MyDataModel, self).save(*args, **kwargs)
이제이 모델을 저장할 때마다 당신은 필드가 두 소수 자릿수의 부동로 채워집니다 보장합니다. 이것은 임의의 소수 자릿수로 반올림하여 일반화 할 수 있습니다.
왜 'DecimalField'를 사용하지 않으시겠습니까? – alecxe
십진법 필드가 입력 상자 안에 증가 및 감소 화살표를 추가했기 때문에'models.FloatField (default = to_some_value)' – ajkumar25
을 사용했는데 기본 방법을 시도하지 않았지만이를 보면서 볼 수 있기를 원합니다. 만약 내가 필요로하는 것에 대한 권리. –