2

我刚刚发现分配有 DjangoF()表达式的字段无法验证。我修改了 Django 文档中的示例:

>>> 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."]}。实际上, number sold 不是整数,而是 的一个实例django.db.models.expressions.ExpressionNode

有没有解决的办法?我所有的模型都扩展了一个在每次保存时自动调用的基类,full_clean()我真的很喜欢保留这个基类,但能够使用原子更新。

4

1 回答 1

-2

你的问题是你试图在一个整数字段中保存一个非整数值。

在您的情况下,该字段number_sold应为整数。

我会假设F('number_sold')引用一个空字段。

尝试F('number_sold') + 1用硬编码的东西替换,例如 1。

如果可行,请告诉我,我可以提供逻辑以避免您的错误。

于 2013-01-18T21:39:21.167 回答