网上搜了好久没有搜到,例如我有一个数据表:
find=a.obejects.all()
a.id
里面的值格式为:
ESN00000.11
ESN246554.12
ESN89728975.13
ESN123131.12
.....
我想把点后面的值删除,然后对应增加到新的 a.id2 中
这个可行吗?脑袋快烂了````
1
stamaimer 2016-11-25 23:38:59 +08:00 via iPhone
如果小数点后面固定只有两位的话,可以使用 slice ,如果不固定可以使用正则表达式。
|
2
windfarer 2016-11-26 01:05:00 +08:00 via Android
RTFM
|
3
dtfm 2016-11-26 02:04:52 +08:00 via Android
如一楼所言,正则大概可以这么干
先分组 m=re.match(^([\w]+).([\d]+)$,a.id),然后取出其中的 m[1]和 m[2] |
4
guoqiao 2016-11-26 04:20:47 +08:00
难道不是 id1, id2 = id.split('.') 吗?
|
5
georgema1982 2016-11-26 04:52:10 +08:00
完全不明白你的需求是什么。 id 本来就是存储和业务无关的内容,你要修改 id 的值干什么?
|
6
ericls 2016-11-26 07:20:24 +08:00 1
先改 model
再手动 migrate 一下 |
7
pimin 2016-11-26 07:27:53 +08:00 via Android
|
9
kangsgo OP @ericls 意思就是数据库里的数据用正则搞一下,然后插入到新的位置,然后加一个 model 么,有没有简便一些的方法?模式好像不能过滤吧,如果模版可以过滤或者用正则就好了
|
10
ericls 2016-11-26 12:48:25 +08:00 via iPhone
@kangsgo 如果这个数据只是展示 而不是查询 你也可以直接 override model 的 __init__()
|
12
YaronYang 2016-11-27 10:54:36 +08:00
小白啊,感觉数据量小扔进 dict 直接切片不就完了..
|
13
zmrenwu 2016-11-27 18:08:21 +08:00
考虑到数据库表已经存在,你应该再查一下 migrate 的文档,代码楼上已经给出了答案。
|