You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django DecimalField验证错误:插入数据库触发异常

解决DecimalField插入数据库的验证错误问题

你的核心问题出在视图代码的对象创建环节:错误地将表单实例bidform赋值给了price字段,而非从cleaned_data中取出的price变量,这直接导致类型不匹配,触发数据库验证错误。Decimal('11.00')本身完全符合模型中DecimalField(max_digits=10, decimal_places=2)的要求,无需额外处理。

修正后的views.py代码

if request.method == "POST":
    bidform = BidForm(request.POST)
    if bidform.is_valid():
        price = bidform.cleaned_data['price']
        # 修正price字段的赋值,使用获取到的price变量而非表单对象
        bid = Bid.objects.create(title=title, price=price, user=username)
        bid.save()

补充优化说明

  • 模型和表单的定义没有问题,ModelForm会自动处理DecimalField的输入验证与转换,cleaned_data中的Decimal('11.00')可以直接存入数据库。
  • Bid.objects.create()方法会自动调用save(),后续的bid.save()可以省略,简化代码:
if request.method == "POST":
    bidform = BidForm(request.POST)
    if bidform.is_valid():
        price = bidform.cleaned_data['price']
        bid = Bid.objects.create(title=title, price=price, user=username)

内容的提问来源于stack exchange,提问作者jeddah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 03:55:13