为什么字段值会被存储为集合格式?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_
相关产品推荐
相关产品推荐

