2010-07-20 28 views
1

我有一個客戶模型,其中包含一個外鍵到聯繫人模型。如何修改Django管理頁面中的ForeignKey字段的呈現方式以避免瀏覽器崩潰?

我在我的數據庫中有超過100,000個聯繫人,並且當我加載特定客戶的管理頁面時,聯繫人的下拉菜單正在填充數據庫中的所有聯繫人。最近,由於剪切長度的原因,開始導致我的Firefox在管理頁面加載時崩潰。

有一種方法要麼:

  1. 一個整數 字段我可以手動修改到 接觸ID替換該字段在必要時
  2. 一些 替代輸入方法替換的下拉菜單,其中將不會 崩潰瀏覽器
  3. 從客戶管理頁面刪除此輸入 共

謝謝!

回答

6

你可以做任何要在事情之一

最簡單的解決方案是從管理員中排除該字段。管理員類中只有say so

通過將該字段包含在管理類的raw_id_fields中,可以將該字段更改爲文本輸入並顯示它的主鍵而不是項目本身。

您還可以使用自動完成文本字段輸入替換標準下拉小部件。使用implemented widget或其他等價物。 - 這可能是您最喜歡的解決方案。

您也可以覆蓋Admin模型上的formfield_for_foreignkey方法來自定義顯示在外鍵下拉列表中的查詢集。您可能希望結賬my implementation以僅顯示當前用戶(或子域)添加的實體。

+0

+1代表自動完成。它是否會爲自動補全生成所有數據,而不是一次顯示全部數據,還是以某種方式動態獲取信息? (後者聽起來很奇怪) – eruciform 2010-07-20 21:45:22

+0

eruciform,Autocomplete小部件使用AJAX請求來即時完成實體'__unicode__',或者我想。 – 2010-07-20 21:48:53

+0

徹底地回答,拉克什曼。你擊中了我所有的要點! – 2010-07-21 01:37:21

1

聽起來像在相關模型的admin.py條目中指定raw_id_fields中的contact字段會使您排序。文檔是here

PS。驚訝的(但不感到驚訝)是FF給出你的數據庫服務器的坦克前...