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

为什么字段值会被存储为集合格式?Django更新数据库异常问题

问题原因

赋值book_title的语句末尾多了一个多余的逗号,触发了Python的元组自动识别语法:

  • 你代码中写的是 b.book_title = title,,末尾的逗号会让Python将该值判定为长度为1的元组(title,),而非你预期的字符串类型
  • CharField字段存储非字符串类型数据时,会自动将对象转为字符串格式写入数据库,所以最终存储的内容就是元组序列化后的"('pokolo',)"格式
修复方案

删掉b.book_title = title,末尾的逗号即可,同时补充原代码遗漏的函数定义冒号、修正不存在的异常类名,修正后的代码如下:

def update_book(request):
    book_id        = request.POST.get('book_id')
    title          = request.POST.get('book_title')
    category       = request.POST.get('book_category')
    type           = request.POST.get('book_type')

    try:
        b=Book.objects.get(pk=book_id)
        # 删掉末尾多余的逗号
        b.book_title      = title
        b.book_category   = category    
        b.book_type       = type        

        b.save()
    except Book.DoesNotExist:
        return JsonResponse({book_id:"Book not found"})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 02:12:00