2011年05月10日 星期二 11:48
大家好
有兩個問題請教
我想請問
設某一物件的已存好屬性
後來可以再update它嗎
假設temp為[44,7,16]
可以update為[44,7,16,8]或[44,7,16,8,22]嗎?
重點就是已存好資料庫的值
可以透過什麼方式更動它嗎
另外,我可以由temp[0]、temp[1]、temp[2]
各別找出它們對應的另一屬性
假設temp[0]、temp[1]、temp[2]
分別代表第一row、第二row、第row的圖片url屬性
要怎麼利用temp求出這三個row的圖片url屬性並顯示呢
2011年05月10日 星期二 13:19
有点糊涂
2011年05月10日 星期二 13:38
首先 謝謝您回應
不好意思 表達不好
我盡力再試著說明
看是否會清楚點
在models.py裡
建置class Photo(models.Model):
裡有許多屬性
title = models.CharField(max_length=100)#圖片標題
pgm_url = models.CharField(max_length=255, blank=True)#圖片連結路徑
matches=models.TextField(blank=True)#匹配個數
等等相關屬性
第一個問題:
透過演算法已存入第三row之matches屬性
[44,7,16]#因為photo.id>3 (已存入超過三筆的資料)
後來可以再透過演算法update這個list
如變成44,7,16,8]嗎?
第二個問題:
因為[44,7,16]是透過photo.id=1,2,3而得的數值,
因此想利用[44,7,16]去找出photo.id=1,2,3各別的photo.pgm_url
請問有什麼方式可以對應找出photo.pgm_url並顯示圖片呢?
2011年05月11日 星期三 20:38
matches是text字段对吧?表达式为:matches=“[44,7,16]”,然后现在的需求是想update变成matches=“[44,7,16,8]”对吧?
如果是这样的话,那么可以用simplejson库进行dumps存入,loads进行取出,然后append后dumps成字符串,其实就是标准的json数据格式存入,就ok了
在python2.6+中,内置了simplejson模块,直接调用即可:import simplejson
如果使用的是django1.2+版本,也可以这样调用:from django.utils.simplejson import simplejson
从数据库取出时:yourList = simplejson.loads(textList)
然后:yourList.append(8)
存入数据库的时候:simplejson.dumps(yourList)
2011年05月11日 星期三 21:09
哇....受教了
謝謝您的回覆
馬上再來試試看
剛才又遇到問題
就是不能理想的篩選圖片
請問有好解嗎?
延續上兩樓我描述的Photo模型
假設有圖片
測試資料庫已有之前上傳的6張圖片
[<Photo: 01>, <Photo: 02>, <Photo: 03>, <Photo: 04>,<Photo: 05>,<Photo: 06>]
****重點來了****
就是依查詢圖片顯示相關的圖片
假如第5張(特徵點數900)的匹配數也就是與前4張的匹配數
形成list儲存matches欄位,設[0,822,8,16]
分別記錄前4張的匹配數,
即第5張與第1張匹配數為0
第5張與第2張匹配數為822
第5張與第3張匹配數為8
第5張與第4張匹配數為16
按第5張圖片時,約會顯示第2張圖片
(第3 4張match數太少,第1張則是無match)
但我此做法是取出len(list)
display=Photo.objects.all()[:len(list)]
這樣只會顯示list長度,即是4張圖片,而非共6張圖片
[<Photo: 01>, <Photo: 02>, <Photo: 03>, <Photo: 04>]
但其實效果是只要顯示
[<Photo: 02>]
應該是要加上filter
但不知該怎麼設filter將我用textfield儲存的list加以利用?
麻煩指教,謝謝。
2011年05月11日 星期三 23:31
x =[0,822,8,16]
y = ["<Photo: 01>", "<Photo: 02>", "<Photo: 03>", "<Photo: 04>"]
#因为数据库中x,y是个对应关系,所以可以使用zip函数匹对,然后在dict;再用个列表推导式就可以得到你要的数据了
xyDict = dict(zip(x,y))
print [xyDict[i] for i in xyDict if i==max(xyDict)]
#print ['<Photo: 02>']
2011年05月12日 星期四 01:49
太感謝了 非常有幫助
最後一問 若次要匹配數的圖片也要顯示呢?
請問怎麼做?
#print ['<Photo: 02>', "<Photo: 03>", "<Photo: 04>"]
Zeuux © 2024
京ICP备05028076号