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

Django向SQLite数据库添加数据时出现元组而非值的问题求助

问题原因&解决方案

嘿,这个问题其实是个很容易踩的Python小坑——你在给Vehicle字段赋值的时候,每个赋值语句结尾都多写了一个逗号!

在Python里,只要你在单个值后面加了逗号,哪怕看起来只是一个字符串,Python都会把它解析成元组。举个例子:
n_vehicle.reference = "123456", 等价于 n_vehicle.reference = ("123456",)

而你的Django模型里reference、make、model都是CharField,本该接收字符串类型,但你传进去的是元组对象,所以数据库里就存成了元组的字符串表示(比如('123456',))。

修正后的代码

只需要把那些多余的逗号删掉就行:

def get_vehicles():
    try:
        fetched_vehicles = [.....]
        for vehicle in fetched_vehicles:
            n_vehicle = Vehicle()
            n_vehicle.reference = "123456"
            n_vehicle.make = "SKODA"
            n_vehicle.model = "Octavia SW"
            n_vehicle.save()
        return "Success"
    except Exception as e:
        print(str(e))

更简洁的写法(推荐)

用Django的objects.create()方法可以一步完成创建和保存,还能避免这种小失误:

def get_vehicles():
    try:
        fetched_vehicles = [.....]
        for vehicle in fetched_vehicles:
            Vehicle.objects.create(
                reference="123456",
                make="SKODA",
                model="Octavia SW"
            )
        return "Success"
    except Exception as e:
        print(str(e))

小提示

这种隐形元组的坑在Python里很常见,尤其是在多行代码排版的时候。如果是为了格式统一(比如函数参数最后一行加逗号),那没问题,但单个值赋值时一定要注意别多打逗号哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:28:57