2013-07-02 41 views
0

我正在使用jQuery UI自動填充小部件與Django一起查找用戶要過濾的'標籤'。我們的數據庫首先保存標籤,確切地說,用戶如何輸入它們,因此「測試」和「測試」不同;然而,在這個自動完成的情況下,我希望用戶只有在'te'輸入到自動填充字段時才能看到'測試'。與Django區分大小寫的自動填充

目前我使用下面的返回可能的標籤列表:

tags = DBTag._model_class.objects.filter(tag__istartswith=term,author_token=self.my_token).distinct('tag') 
found = [{'label':"%s" % tag.tag, 'value': "%s" % tag.tag} for tag in tags] 
return to_json(found) 

但這種回報「測試」和「測試」。有什麼想法嗎?

編輯:從Python循環中刪除'令牌',因爲它是不需要的。

+0

你特別想要的大寫第一個版本,或者你只是想在標籤的一個版本?另外,對於兩個不同的測試標籤,'tag.token'屬性會不同? –

+0

我想要一個版本的標籤(所以用戶只能看到「測試」而不是「測試」和「測試」)。我可以使用python,但更感興趣的是我是否可以通過某種形式的「獨特」/模型方法來實現。關於令牌,是的,它們會有所不同,但該領域實際上是一個遺蹟,不應該在那裏。我做了一個單獨的調用來拉下與'標籤'相關的所有項目,因此在那個時候它是不區分大小寫的。 – Msencenb

+0

嗯。我詢問了'tag.token',因爲如果你只需要'tag.tag'文本,你可以通過'extra'來選擇小寫的標籤名稱,然後使用'values_list'來拉取那個文本。如果您還需要PK或其他標籤屬性,但希望每個小寫標籤名稱只能獲得一個PK,但還想獲得包含查詢的多個標籤,只要它們不共享名稱,我認爲您將要必須在Python中完成。 –

回答

1

得到公正的唯一的標籤內容匹配,我認爲這應該工作:

tag_text = BGTag._model_class.objects.filter(tag__istartswith=term, author_token=self.my_token).extra(select={'lc_tag': 'LOWER(tag)'}).values_list('lc_tag', flat=True).distinct()