我尝试过滤并获取一些使用此段的对象。如何用“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