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
相关产品推荐
相关产品推荐

