我嘗試過濾並獲取一些使用此段的對象。如何用「contains」過濾?
baseSet = ThreadedComment.objects.filter(tree_path__contains = baseT.comment_ptr_id)
但它帶來了一些不應該在那裏的物體。 例如,我的baseT.comment_ptr_id是1,它帶有這些tree_path的項目。
comment_ptr_id=1 treepath = 0000000001
comment_ptr_id=3 treepath = 0000000001/0000000003
comment_ptr_id=4 treepath = 0000000001/0000000003/0000000004
comment_ptr_id=8 treepath = 0000000001/0000000003/0000000004/0000000008
comment_ptr_id=10 treepath = 0000000006/0000000010
comment_ptr_id=11 treepath = 0000000011
最後2個不應該在這裏。但是由於它們的tree_path包含「1」 過濾器也會帶來這些。
如何編寫正則表達式來創建不帶這些項目的過濾器?
+1,但在填充更改的情況下使用COMMENT_PATH_DIGITS。 – JamesO 2012-01-09 14:21:06
'COMMENT_PATH_DIGITS = len('0000000000') - len(str(baseT.comment_ptr_id))'對不對?如果是這樣,爲什麼不呢:''0'* COMMENT_PATH_DIGITS + str(baseT.comment_ptr_id)'我不明白爲什麼你必須弄亂模板。 – 2012-01-09 18:00:58
嗯,我認爲重點是使用COMMENT_PATH_DIGITS而不是len(<0的字符串>),否則靈活性不會增加。這樣說,是的,你可以做('0'*(COMMENT_PATH_DIGITS - len(str(baseT.comment_ptr_id))))+ str(baseT.comment_ptr_id),但恕我直言,這是混亂。 – 2012-01-10 03:11:11