2013-06-03 57 views
0

我正在嘗試爲我維護的數據庫創建一個搜索頁面,方法是創建一個包含我的幾個字段的所有唯一值的動態維護選擇框。如何向選定的小部件添加空白默認選項?

經過大量的時間和思考,我決定,最好的方式來創建搜索表單爲我的數據庫將是意見這樣做,造成這個東西相當於:

search_form = modelform_facotry(my_model, 
           fields=('field_one', 'field_two',), 
           widgets={'field_one': Select(choices=((datum.field_one, datum.field_one) for datum in my_model.objects.distinct('field_one'))), 
             'field_two': Select(choices=((datum.field_two, datum.field_two) for datum in my_model.objects.distinct('field_two'))), 
           } 
) 

該作品大!除了我無法弄清楚如何包含一個空白選項......選擇必須以類似的循環方式創建,所以我不能僅僅添加一個空白的選項,因爲許多解決方案都提示。

我已經把我的頭髮拉出了一段時間了,因爲它似乎像添加一個空白選項到選定的小部件將是一個簡單的修復,但顯然不是。任何幫助,將不勝感激。

編輯:我要補充一點,我的字段都爲CharFields

回答

1

玩弄了一段時間後,我發現我需要做的:

FIELD_ONE_CHOICES = (('', '-----'),) 
for datum in my_model.objects.distinct('field_one'): 
    FIELD_ONE_CHOICES += ((datum.field_one, datum.field_one),) 
FIELD_TWO_CHOICES = (('', '-----'),) 
for datum in my_model.objects.distinct('field_two'): 
    FIELD_TWO_CHOICES += ((datum.field_two, datum.field_two),) 

search_form = modelform_factory(my_model, 
           fields=('field_one', 'field_two'), 
           widgets={'field_one': Select(choices=FIELD_ONE_CHOICES), 
             'field_two': Select(choices=FIELD_TWO_CHOICES), 
           } 
) 

元組可能是令人沮喪...

相關問題