2013-04-15 33 views
1

在我有我使用這些模型Django應用程序:濾波Django管理字段值的列表,基於之前的字段值選擇

  • 客戶
  • 簡介

一個Client只能有一個AgencyAgency可以有很多Clients

當我編輯/創建Profile我首先選擇Agency,然後我可以選擇多個Clients(這是可以的)。

我的問題是,在Clients字段中,我看到所有現有的Clients,而我只想看到與所選Agency相關的僅Clients。我怎樣才能做到這一點?

謝謝!

+2

如果你提供,你已經寫了這麼一段代碼就更好了遠。 – alecxe

回答

0

如果您正在編輯配置文件,您可以使用「formfield_for_manytomany」https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.formfield_for_manytomany或「formfield_for_choice_field」爲客戶端字段編寫過濾器。

但是爲了創建配置文件,只能用javascript afaik更改客戶端列表。在管理表單上這可能是一件棘手的事情。

爲什麼你不只是選擇客戶,並忽略該機構的表格?您可以使用驗證器驗證選擇。

+0

另外我的另一位朋友告訴我,這隻能使用客戶端JavaScript(ajax),但是...對我來說看起來很奇怪。我的意思是,這是一個非常常見的任務,奇怪的是,這個特性並沒有集成在django本身中。 –

1

這個應用程序可以幫助,我想(Django應用程序來處理鏈接的示範田) - 在PyPI將https://github.com/digi604/django-smart-selects

鏈接 - https://pypi.python.org/pypi/django-smart-selects/

+0

我試過使用智能選擇,但是當我嘗試編輯配置文件時,出現此錯誤:列agencies_userprofile.clients_id不存在 LINE 1:... e「。」user_id「,」agencies_userprofile「。 agency_id 「 」機構_... 這是我如何使用它: 客戶= ChainedForeignKey( 客戶端, chained_field =「 代理」, chained_model_field = 「代理」, SHOW_ALL =假 auto_choose =真 ) –

+0

@AndreaGrandi嘗試運行manage.py syncdb – ndpu

+0

據我所知,syncdb不ALTER表(因爲這個原因使用南方工具),但我可以嘗試。 這是輸出: ./manage.py執行syncdb 創建表... 安裝自定義的SQL ... 安裝索引... 從0固定裝置(S) –