我刚刚发现分配有 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()
我真的很喜欢保留这个基类,但能够使用原子更新。