다른 정보와 함께 신발 크기를 기본적으로 저장하는 앱을 만들고 있습니다. Django Decimal 필드를 사용하여 크기를 저장했지만 10 진수 필드는 10.0과 같은 크기를 저장하므로 내 질문이 있습니다. 또는 이미 int (10)를 제공 할 때 이미 필드가있는 경우 만들 수있는 방법이 있습니까? 값을 int로 저장하고 십진수로 제공된 경우 (10.5) 10 진수로 저장합니까?django 스마트 십진수 필드
답변
TBH는 속성 - 유효 신발 크기의 수가 상대적으로 적은 당신이 그들을 포맷 할 수있는 방법은 당신이 원하는 방법에 대해 설명합니다. 이 신발 이외의 것들을 포함 할 수있는 제품 모델의 일부의 경우는 'M', 'L'등 'XXL'
같은 값을 저장할 수 있기 때문에하는 CharField는 '크기'에 대한 유용
신발 크기에 대해 계산할 필요가 없으므로 DecimalField를 사용할 필요가 없습니다.
그런 이유로 DB에 저장되는 내용은 중요하지 않으며 표시되는 내용과 @j_syk에는 주석의 해당 행에 대한 몇 가지 좋은 대안이 있습니다.
나는이 솔루션을 채택'M', 'L'등이 좋은 점. 일부 신발은 슬리퍼와 샌들처럼 약간의 크기입니다. 저장되는 데이터가 신발에 관한 것인지 또는 사용자의 신발 크기에 해당하는지에 따라 달라질 수 있습니다 (즉, 내 신발 크기가 XL이라고 절대로 말하지 않습니다). –
나는 선택과 함께 charfield를 사용하기로 선택했다, 나는 그것의 가장 쉬운 길을 지금 생각했다 :) – Paulo
단순히 문자열로 변환하여 캐스팅하지 않습니까? 스토리지를 그대로 유지할 수 있지만 데이터를 표시 할 때 원하는대로 번호의 형식을 지정하십시오. 아마 선택으로 CharField을 사용하십시오 신발 크기 필드에 대한
>>> str(Decimal(10))
'10'
>>> str(Decimal(10.5))
'10.5'
>>> str(Decimal(10.0))
'10'
나는 이것에 대해 생각 해본 적이 없다.이 기능을 추가하기 위해서는 커스텀 필드를 써야한다는 것을 의미하는 가장 좋은 방법이라고 생각 하나? – Paulo
[CharField']를 [초기 값] (https://docs.djangoproject.com/en/dev/ref/forms/fields/#initial)과 함께 사용하여 원하는대로 표현할 수 있습니다. 문자열). 그것을 저장할 때,'Decimal' 클래스가 그것을 저장할 것이므로 걱정할 필요가 없습니다 : 그것은 잘 작동 할 것입니다. – jro
그러나 소수점 클래스가 저장하면 .o?와 함께 저장됩니다. – Paulo
:
- 이 여기
는 표현의 문제이기 때문에 사용자 정의 __unicode__
에 트릭을 구현하는 사용자 정의 decimal.Decimal
인스턴스를 반환 Django model Field
class PyPrettyDecimal(decimal.Decimal):
def __unicode__(self):
# TODO: to improve with decimal properties ?!?
mod = self - int(self)
if not mod:
rv = int(self)
else:
rv = self.quantize(mod.normalize())
return unicode(rv)
class PrettyDecimalField(models.DecimalField):
__metaclass__ = models.SubfieldBase
def to_python(self, value):
if value is None:
return value
try:
return PyPrettyDecimal(value)
except decimal.InvalidOperation:
raise exceptions.ValidationError(self.error_messages['invalid'])
- 1. django 스마트 앱 선택
- 2. Java 텍스트 필드 십진수 유효성 확인
- 3. Sql 위도와 경도의 십진수 필드 크기
- 4. InfoPath 2010에서 십진수/돈 필드 유형 사용
- 5. 십진수 필드 및 현지화 용 MVC3 편집
- 6. Django, ManyToMany 사용자와의 스마트 한 쿼리
- 7. Django, 고유 필드 생성
- 8. Django OneToOne 필드
- 9. Django 양식 필드 그룹화
- 10. django 모델의 반복 필드
- 11. Django Choices 필드 분배기?
- 12. Django 다중 태그 필드
- 13. Django : modelform에 필드 추가
- 14. Django 모델 반복 필드
- 15. Django Ajax 필드 도움말
- 16. Django 모델 - 상속받은 필드
- 17. Django 모델 필드
- 18. Django 모델의 숨겨진 필드
- 19. django 필드 지정 후크
- 20. Django ModelForms 필드 수정
- 21. django modelform의 단일 필드
- 22. Django : Formset으로 양식 필드
- 23. django 이미지 필드 모델
- 24. django 추천 콘텐츠 필드
- 25. django 양식의 추가 필드
- 26. 십진수 정밀도
- 27. Django : 임의의 필드 유형을 허용하는 Django 모델
- 28. MySQL FLOAT 및 십진수
- 29. MySQL의 음수 십진수 합
- 30. 십진수 타입의 PDO :: PARAM?
실제로 DecimalField에 int 유형으로 저장하지 않습니다. 템플릿 태그 또는 모델 메서드를 작성하여 정수로 인쇄 된 십진수가없는 숫자를 출력 할 수 있습니다. –
값을받은대로 저장해야하므로 걱정할 필요없이 데이터베이스에서 가져올 수 있습니다. .0 – Paulo
에 대해 CharField를 사용하십시오. –