Tuesday, 6 February 2018

장고 외환


장고 외환
App Store를 통해 가져 오기 우리의 응용 프로그램 에서이 게시물을 읽으십시오!
Django : 어떻게 돈 값을 저장해야합니까?
나는 여기서 패러다임 문제를 겪고있다. 나는 돈을 Decimal ()으로 저장해야하는지, 아니면 문자열로 저장하고 10 진수로 변환해야하는지 여부를 모른다. 내 추론은 이것이다 :
PayPal은 소수 2 자리를 필요로하기 때문에 49 달러의 제품도 있다면 PayPal은 49.00이 전선을 가로 지르길 원합니다. Django의 DecimalField ()는 십진수를 설정하지 않습니다. 소수점 이하의 최대 값만 저장합니다. 그래서 거기에 49가 있고 소수 자릿수 2로 설정된 필드가 있으면 49로 저장됩니다. Django는 기본적으로 데이터베이스에서 10 진수로 역 직렬화 할 때 유형 변환입니다 (데이터베이스 10 진수 필드가 없다.) 그래서이 문제의 디자인 문제와 관련하여 속도 문제를 완전히 신경 쓰지는 않는다. 확장성에 가장 적합한 것을하고 싶습니다.
또는 더 나은 방법은 django DecimalField ()를 구성하여 항상 TWO_PLACES 서식 스타일로 서식을 지정하는 방법을 알고있는 사람이 있는지 여부입니다.
.quantize () 메서드를 사용할 수도 있습니다. 이것은 소수점 이하의 자리수에 10 진수를 반올림합니다. 제공하는 인수는 자리수를 지정합니다.
또한 원하는 반올림 접근 방식을 지정하는 인수를 사용할 수 있습니다 (다른 회계 시스템은 다른 반올림을 원할 수 있음). 파이썬 문서에서 더 많은 정보.
다음은 올바른 값을 자동으로 생성하는 사용자 정의 필드입니다. 이 작업은 데이터베이스에서 검색 할 때만 수행되며 db에 저장하고 다시 검색 할 때까지 사용자가 직접 설정할 때 도움이되지 않습니다.
나는 당신이 10 진수 형식으로 저장해야하며 00:00 형식으로 포맷 한 다음 PayPal로 보내야한다고 생각합니다.
원하는 경우 모델에 메서드를 추가 할 수 있습니다.
사우스 마이 그 레이션을 추가하는 파티 버전에 늦었습니다.
돈은 슬픈 듯이 존재하지 않는 돈 필드에 저장되어야합니다. 돈은 2 차원 적 가치 (금액, 통화)이기 때문에.
많은 파이크가있는 파이썬 돈 lib가 있지만 아직 작동하지 않는 lib 디렉토리가 있습니다.
표현과 저장 공간을 섞지 않는 것이 좋습니다. 데이터를 2 자리로 십진수 값으로 저장하십시오.
UI 레이어에서 사용자에게 적합한 형식으로 표시하십시오 ( ".00"을 생략 할 수도 있음).
PayPal로 데이터를 보내면 인터페이스가 요구하는대로 포맷하십시오.
Will_Hardy의 대답을 바탕으로, 매번 max_digits와 decimal_places를 지정할 필요가 없습니다.
내 경험과 다른 사람들에게서 돈은 통화와 센트 금액의 조합으로 저장하는 것이 가장 좋습니다.
그것으로 처리하고 계산하는 것은 매우 쉽습니다.
Valya가 말했듯이, DecimalField로 DecimalField를 저장하고 필요한 경우 소수 자릿수를 수동으로 추가하여 기본 서식 지정 기술을 사용합니다.
DecimalField를 적절하게 형식화 된 문자열로 뱉어내는 모델이나 모델을 모델에 추가 할 수도 있습니다.

장고 외환
당겨 요청 0.
오늘 GitHub에 가입하십시오.
GitHub은 코드를 호스팅하고 검토하고, 프로젝트를 관리하고, 소프트웨어를 함께 구축하기 위해 함께 일하는 2,000 만 명이 넘는 개발자들의 본거지입니다.
HTTPS로 복제하십시오.
Git을 사용하거나 웹 URL을 사용하여 SVN에서 체크 아웃하십시오.
이 지점은 guybowden : master 뒤에 1 커밋입니다.
Openexchangerates. org/를 사용하여 Django를위한 간단한 외환 앱
openexchangerates. org/에서 환율로 DB 테이블 채우기
그리고 돈을 변환하기 위해 그것을 사용하는 두 가지 기능이 있습니다.
귀하의 응용 프로그램에 '외환'을 추가하십시오.
python manage. py syncdb를 실행하십시오.
다음 관리 명령을 실행하십시오.
python manage. py updateexchangerates.
환율은 시간당 한 번 업데이트되므로 Crontab을 통해 시간당 한 번씩 해당 관리 명령을 실행하거나 시스템에서 요율을 최신 상태로 유지하기 위해 일정에 사용하는 모든 것을 실행할 수 있습니다.
&부; 2017 GitHub, Inc. 용어 개인 정보 보안 상태 도움말.
현재이 작업을 수행 할 수 없습니다.
다른 탭이나 창을 사용하여 로그인했습니다. 새로 고침하여 세션을 새로 고침하십시오. 다른 탭이나 창에서 로그 아웃했습니다. 새로 고침하여 세션을 새로 고침하십시오.

장고 외환
당겨 요청 4.
오늘 GitHub에 가입하십시오.
GitHub은 코드를 호스팅하고 검토하고, 프로젝트를 관리하고, 소프트웨어를 함께 구축하기 위해 함께 일하는 2,000 만 명이 넘는 개발자들의 본거지입니다.
HTTPS로 복제하십시오.
Git을 사용하거나 웹 URL을 사용하여 SVN에서 체크 아웃하십시오.
py-moneyed를 사용하여 모델과 양식의 Money 필드 지원을 추가하는 작은 Django 앱.
이 버전은 테스트를 추가하고 몇 가지 중요한 버그 수정이 함께 제공됩니다.
지원되는 Django 버전 : 1.8, 1.10, 1.11, 2.0.
지원되는 Python 버전 : 2.7, 3.3, 3.4, 3.5, 3.6.
지원되는 PyPy 버전 : PyPy 2.6, PyPy3 2.4.
Django와 Python의 이전 버전에 대한 지원이 필요하다면 0.11.x 브랜치에서 최신 버전을 사용할 수 있습니다.
py-moneyed를 통해 django-money는 다음과 같은 결과를 얻습니다.
적절한 Money 값 처리 지원 (표준 Money 디자인 패턴 사용) 순환중인 모든 통화의 통화 클래스 및 정의 올바른 통화 기호로 된 대부분의 통화 서식 지정.
pip 설치 django-money.
그러면 py-moneyed v0.7 (또는 그 이상)이 자동으로 설치됩니다.
INSTALLED_APPS에 djmoney를 추가하십시오. 이것은 돈 필드가 관리자에게 올바르게 표시되도록하기 위해 필요합니다.
일반 모델 필드로 사용하십시오.
돈 필드가있는 모델 검색 :
현장 검증에는 3 가지 다른 가능성이 있습니다.
통화에도 불구하고 숫자로 된 숫자로; 단일 금액으로; 여러 금액으로
아래에 나와있는 것처럼 이들 모두를 조합하여 사용할 수 있습니다.
위 모델의 잔액 필드에는 다음 유효성 검사가 있습니다.
모든 입력 값은 통화에도 불구하고 10에서 1500 사이 여야합니다. 노르웨이 크라운 금액 (NOK)은 500에서 900 사이 여야합니다. 유로는 100에서 1000 사이 여야합니다. 미국 달러는 50에서 500 사이 여야합니다.
통화는 moneyed에 나열되어 있으며, 이 모듈은이를 사용하여 관리자에게 선택 목록을 제공하고 유효성을 검사합니다.
모든 프로젝트에서 사용할 수있는 새 통화를 추가하려면이 두 행을 settings. py 파일에 간단하게 추가하면됩니다.
프로젝트에 나열된 통화를 제한하려면 settings. py에서 통화 코드 목록이있는 CURRENCIES 변수를 설정하십시오.
목록에는 유효한 통화 코드가 포함되어야합니다.
또한 통화 선택을 직접 지정할 수있는 기능이 있습니다.
Django-money는 모델에 대해 좋아하는 커스텀 모델 매니저를 사용하도록하지만, 머니 가치가있는 모델을 검색 할 수 있도록 메소드 중 일부를 포장해야합니다.
이는 MoneyField를 사용하는 모델의 "objects"속성에 대해 자동으로 수행됩니다. 그러나 관리자에게 다른 속성을 할당하면 관리자를 직접 래핑해야합니다. 예를 들면 다음과 같습니다.
또한, money_manager 랩퍼는 표준 QuerySet 메소드 만 랩핑합니다. "get", "filter"등과 같은 표준 쿼리 메소드를 사용하지 않는 커스텀 QuerySet 메소드를 정의한다면, 다음과 같이 수동으로 커스텀 메소드를 장식해야합니다 :
설정 파일에서 USE_L10N = True로 설정하면 서식이 설정됩니다.
구성에서 서식을 사용할 수 없게되면 서식 파일에 기본 서식이 사용됩니다.
템플리트에서는 특수 태그를 사용하여 돈을 형식화 할 수 있습니다.
파일 settings. py에서 djmoney 라이브러리의 INSTALLED_APPS 항목에 추가 :
템플릿에서 다음을 추가합니다.
그게 다야.
money_localize 태그에 대한 지침 :
동일한 효과 :
변수에 지정 :
통화로 번호 서식 지정하기 :
필수 패키지를 설치하십시오.
테스트를 실행하는 데 권장되는 방법은 다음과 같습니다.
현재 환경에서 응용 프로그램 테스트하기 Python :
환율로 작업하려면 django-money : github / evonove / django-money-rates로 구성된이 레포를 확인하십시오.
django-money는 설정으로 통화 변환을 위해이 앱을 자동으로 사용하도록 구성 할 수 있습니다. AUTO_CONVERT_MONEY = 장고 설정에서 true입니다. 통화 변환은 손실이 많은 프로세스이므로 자동 변환은 대개 간단한 사용 사례에 대해서만 좋은 전략입니다. 대부분의 유스 케이스의 경우 통화 변환이 언제 발생하는지 정확히 알 필요가 있으며 자동 변환으로 버그를 숨길 수 있습니다. 또한 자동 변환을 사용하면 다른 방향에서 발생하는 변환으로 인해 commutativity (A + B == B + A)와 같은 일부 속성을 잃을 수 있습니다.
djmoney가 settings. py의 INSTALLED_APPS에 있고 MoneyField가 Django REST Framework와 자동으로 작동하는지 확인하십시오.
내장 시리얼 라이저는 다음과 같은 방식으로 작동합니다.
모델 폼의 업데이트는 Django 1.10.1에서 저장되지 않습니다. 그들은 1.10.0에서 저장되며 Django 1.10.2에서 수정 될 것으로 예상됩니다.
&부; 2017 GitHub, Inc. 용어 개인 정보 보안 상태 도움말.
현재이 작업을 수행 할 수 없습니다.
다른 탭이나 창을 사용하여 로그인했습니다. 새로 고침하여 세션을 새로 고침하십시오. 다른 탭이나 창에서 로그 아웃했습니다. 새로 고침하여 세션을 새로 고침하십시오.

장고 외환
App Store를 통해 가져 오기 우리의 응용 프로그램 에서이 게시물을 읽으십시오!
Django : FloatField 또는 DecimalField 통화?
나는 어느 것이 통화 장으로 더 적합 할 것이 흥미 롭다? 차이를 느끼는 것과 같은 간단한 작업, 예전과 새로운 가격 사이의 비율을 할 것입니다. 나는이 숫자가 0 인 경우 영 (예 : 10.50)과 대다수의 시간을 두 자리로 유지할 계획이며, 이 숫자를 숨기고 "10"으로 표시 할 것입니다.
ps : 통화는 달러 기준이 아닙니다 :)
돈을 위해 항상 DecimalField를 사용하십시오. 간단한 연산 (더하기, 빼기)조차도 부동 소수점 올림 문제에 영향을받지 않습니다.
이 질문에 대한 대답은 정확하지만 일부 사용자는 DecimalField와 FloatField의 차이점을 알아 내기 위해이 질문에 대해 비틀 거립니다. Seth가 떠오르는 플로트 라운딩 문제는 통화 문제입니다.
장고 문서 상태.
FloatField 클래스는 때때로 DecimalField 클래스와 혼합됩니다. 둘 다 실수를 나타내지 만 그 수를 다르게 나타냅니다. FloatField는 내부적으로 Python의 float 유형을 사용하고 DecimalField는 Python의 Decimal 유형을 사용합니다. 자세한 내용은 여기를 참조하십시오.
다음은 두 필드 간의 다른 차이점입니다.
DecimalFields는 'decimal_places'및 'max_digits'속성을 정의해야합니다. 위의 필수 속성에서 여기에 포함 된 두 가지 자유 형식 유효성 검사가 있습니다. 즉, max_digits를 4로 설정하고 4.00000 (5 자리) 인 십진수를 입력하면이 오류가 발생합니다. 4 개 이하의 값이 있는지 확인하십시오 합계 자리. 또한 소수점 자리에 대해 비슷한 양식 유효성 검사가 수행됩니다 (대부분의 브라우저에서 입력 필드의 step 속성을 사용하여 프론트 엔드에서 유효성을 검사 함). decimal_places = 1로 설정하고 0.001을 입력하면 오류가 발생합니다 최소값은 0.1이어야 함 Decimal을 반환 DecimalField DecimalField로 추가 유효성 검사를하지 않음 DecimalType을 사용하면 위에서 설명한대로 설정해야하는 필수 특성으로 인해 반올림도 처리됩니다. 그래서 쉘에서 데이터베이스 (postgresql)에서 DecimalField가 numeric (max_digits, decimal_laces) Type으로 저장되고 Storage가 "main"으로 설정된 경우 위의 예에서 Type은 숫자 (4,1)입니다.
내장 된 float 유형, 스마트 반올림 없음을 반환하며 실제로 Seths 응답에서 설명한대로 반올림 문제가 발생할 수 있습니다. DecimalField에서 얻은 추가 폼 유효성 검사가 없습니다. 데이터베이스 (postgresql)에서 FloatField가 "배정 밀도"유형으로 저장되고 저장소가 "일반"으로 설정됩니다.
둘 모두에 적용됩니다.
두 필드는 "필드"클래스에서 확장되며 '공백', 'null', 'verbose_name', '이름', 'primary_key', 'max_length', 'unique', 'db_index', 'rel' 'unique_for_month', 'unique_for_year', 'choices', 'help_text', 'db_column', 'db_tablespace', 'auto_created', 'validators', 'error_messages'등의 속성을 포함 할 수 있습니다. "필드"에서 확장 된 모든 필드가 가질 수 있습니다. 두 필드의 기본 양식 위젯은 TextInput입니다.
나는이 질문을 가로 질러 두 분야의 차이를 찾을 때, 나는 이것이 같은 상황에있는 사람들을 도울 것이라고 생각했다.
업데이트 : 질문에 대답하기 위해 Decimal이 훨씬 더 적합하지만 통화를 표현할 수 있다고 생각합니다. float로 간주 될 때 반올림 문제가 있으므로 float 표현을 소수 둘째 자리로 반올림하기 위해 round (value, 2)를 사용해야합니다. 다음은 간단한 예입니다.
부유물에 문제가 생길 수 있습니다. 여기서는 값 5로 반올림합니다.
그러나이 경우에는 다음과 같이됩니다.
그것은 플로트가 메모리에 저장되는 방법과 관련이 있습니다. 여기를 보아라.
편집 : Satchmo Project는 더 이상 활성화되지 않으므로 통화 처리를 위해 이러한 대안을 살펴보십시오.
Django 기반 Satchmo 프로젝트에는 살펴볼 가치가있는 CurrencyField 및 CurrencyWidget이 있습니다.
소스에 대한 satchmo_utils 앱 디렉토리를 확인하십시오.

No comments:

Post a Comment