0

私は、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) を持っています。

どんなガイダンスでも大歓迎です。

4

1 に答える 1

0

Python をアップグレードします。

あなたの Python バージョンは < 2.7 ですよね?

Python 2.7 にアップグレードしてください。

于 2012-07-12T21:52:59.170 に答える