2

DjangoF()式で割り当てられたフィールドが検証に失敗することを発見しました。Django doc の例を変更しました:

>>> product = Product.objects.get(name='Venezuelan Beaver Cheese')
>>> product.number_sold = F('number_sold') + 1
>>> product.full_clean() # My addition.
>>> product.save()

そして、私は得ています: ValidationError: {'number_sold': [u"'(+: (DEFAULT: ), 0)' value must be an integer."]}. 実際、販売数は整数ではなく、 のインスタンスですdjango.db.models.expressions.ExpressionNode

これを回避する方法はありますか?私のモデルはすべて、full_clean()保存のたびに自動的に呼び出される基本クラスを拡張します。私はこの基本クラスを維持したまま、アトミックな更新を使用できるようにしたいと考えています。

4

1 に答える 1

-2

問題は、整数フィールドに非整数値を保存しようとしているということです。

あなたの場合、フィールドnumber_soldは整数であることが期待されます。

F('number_sold')空のフィールドを参照していると思います。

F('number_sold') + 11 などのハードコードされたものに置き換えてみてください。

それが機能する場合はお知らせください。エラーを回避するためのロジックを提供できます。

于 2013-01-18T21:39:21.167 に答える