私は、DecimalField を含む Django モデルを持っています。これは、tastypie ModelResource を通じて公開しようとしています。Tastypie の URL をリクエストすると、次のエラーが発生するようです。
float を Decimal に変換できません。最初にフロートを文字列に変換します
スタック トレースは、packages/tastypie/fields.py の 250 行目あたりを参照しています。
def convert(self, value):
if value is None:
return None
return Decimal(value)
ModelResource 定義でこのフィールドを除外すると、エラーはなくなり、リクエストは正常に返されます (驚くことではありません)。
私は、tastypie で DecimalField を明示的に定義する必要があるかどうか疑問に思っていましたが、それは私には明らかではありませんでした。
他の状況の下位レベルの python では、Decimal(str(value)) を実行することでこの種の問題を解決しました。だから私は値と呼ばれるこのフィールドで dehydrate_FOO でそのようなことを試しました:
def dehydrate_value(self, bundle):
"for massaging data before it is returned to the client"
return Decimal(str(bundle.data['value']))
しかし、エラーは解決しません。Stack Overflow などを検索しましたが、多くの手がかりは見つかりませんでした。この問題は多少関連しています: https://github.com/toastdriven/django-tastypie/issues/281
しかし、tastypie の更新バージョン (v0.9.11) を持っています。
どんなガイダンスでも大歓迎です。