我有一个表software结构是
name,version,patch,memo四个字段
其中name,version,patch是联合主键
当我用django orm
例如有一行数据是:
|qq|v1.0|0628|xxx|
soft = software.objects.filter(name='xxx').first()
soft.version = 'v3.0'
soft.save()
期望的记过是这行数据的version字段被修改
然而执行的结果是这行数据本身还在,同时新建了一个version字段被修改后的记录
如果我直接使用sql语句执行update操作,可以达到期望的结果
这是为什么?django 的orm不能修改主键列的值嘛?
注:我试了下其他单一主键的表,django orm也是不能修改主键的值,会直接新建一行数据
咦我的妈
不能取出obj然后修改主键值再save()
save的时候因为主键已改变,orm无法找到表中对应行,所以直接就create了
应该直接用.update()