2009-04-19 57 views
1

當選擇框中有很多東西時,默認的django 1.0.2 ManyToManyField小部件(多選)很難使用。是否有另一個可用的部件,在textarea中給出了逗號分隔的id列表?如果這不可用,我需要做什麼來編寫一個,並將它顯示在ModelForm.as_p()和管理站點上?ManyToManyField小部件

回答

2

如果沒有現有的小部件,你想要什麼做(和我不不要認爲有),那麼你需要寫你自己的。不幸的是,Django文檔沒有告訴你如何做到這一點,但是通過查看源代碼​​來複制現有的Widget並修改它並不難。

+0

令人失望的是,這裏沒有任何東西,但是它接近於:http://www.djangosnippets.org/snippets/1365/ – dar 2009-05-05 18:20:34

1

在管理員可以使用濾波器水平和/或濾波器垂直

class MyModelAdmin(admin.ModelAdmin): 
    filter_horizontal = ['many_to_many_field_name'] 
    filter_horizontal = ['another_many_to_many_field_name'] 

doc

+0

謝謝,但那是相同的。這導致我到ManyToManyRawIdWidget,這是最接近我正在尋找使用。我想我會以ManyToManyRawIdWidget作爲基礎來構建我需要的東西。 – dar 2009-04-19 15:35:52

2

我相信在manytomanyfield上設置raw_id_fields實際上會用逗號分隔的id列表輸出一個TextInput小部件。 您可以在相應的ModelForm中的admin.py中覆蓋此設置,並在其上強制使用TextArea小部件。

+0

看起來像這隻適用於管理員應用程序。謝謝,但對這個問題沒有用。 – dar 2009-06-19 17:28:22