2011-02-24 42 views
15

默認情況下,Django的管理員將admin中的ForeignKey字段顯示爲select字段,並將外表中的每個記錄列爲選項。在一個管理員可訪問的模型中,我將User模型引用爲ForeignKey,並且由於我有成千上萬的用戶,Django使用數千個選項來填充選擇。這導致管理頁面加載非常慢,並且選擇不是很有用,因爲可能需要一段時間才能滾動瀏覽數千個選項以找到所需的選項。提高管理中Django外鍵字段的性能

爲了改善頁面加載和可用性,更改此字段的渲染的最佳方法是什麼?我希望將選擇字段替換爲某種按鈕來啓動搜索表單彈出式窗口,或者使用通過Ajax搜索關鍵字的文本字段來查找他們想要關聯的特定用戶的ID。管理員有沒有像這樣的內建,或者我必須從頭開始寫這個?

回答

8

您可以爲Django使用少數自動完成應用程序之一。檢查他們在Django Packages

還有django-extensionsForeignKeyAutocompleteAdmin,適合您的需求很好。

+0

第二個鏈接不再工作,但請參閱此處的文檔:https://django-extensions.readthedocs.io/en/latest/admin_extensions.html – 2017-11-30 16:57:02

+0

我修復了它。謝謝。 – Etienne 2017-12-01 04:20:30

26

raw_id_fields添加到您的模型只顯示ID而不是下拉。

+0

有沒有自動完成,但有時最簡單的解決方案是最好的。 – 2011-02-25 03:15:22

+0

哦,Chrome非常善於記住與某個ID相關聯的名稱,以實現一種自動完成功能。 – 2011-02-25 03:15:56

0

另一種選擇是增加readonly_fields,而不是raw_id_fields