Dropdown-Menüs für Land / Bundesstaat / Stadt innerhalb des Django-Administrators inline

8

Ich habe einen City-Fremdschlüssel nach BusinessBranch-Modell. Das Modell "Mein Stadt" verfügt auch über Landes- und Landesschlüssel für Länder- und Bezirksmodelle. Es fällt mir schwer, in meiner BusinessBranchInline Status- und Länder-Dropdown-Menüs anzuzeigen. Was wäre der beste Weg, dies zu erreichen? Es wäre großartig, wenn die Dropdown-Elemente Elemente basierend auf dem Wert des übergeordneten Elements filtern.

Django-Admin-Screenshot http://i33.tinypic.com/15n69mq.png

    
Boolean 04.11.2009, 02:49
quelle

3 Antworten

23

Mit etwas Hackerei ist es ziemlich machbar.

Im folgenden Beispiel wird Grafschaft anstelle von Staat und Gemeinde anstelle von Stadt verwendet. Also, die Modelle sind wie folgt:

%Vor%

Es gibt zwei Seiten des Problems: clientseitiges JavaScript und serverseitiges Feld-Rendering.

Das clientseitige JavaScript (mit JQuery, von dem angenommen wird, dass es von /site_media/js/municipality.js geliefert wird) lautet wie folgt:

%Vor%

Nun benötigen Sie die Ajax-Ansicht, um Gemeinden zu bedienen, die zu einem bestimmten Kreis gehören (vermutlich von / communities_for_county / ):

%Vor%

Und schließlich ist der serverseitige Code in admin.py zum Rendern des Feldes wie folgt. Zuerst die Importe:

%Vor%

Dann das Widget:

%Vor%

Als nächstes das Formular:

%Vor%

Und schließlich die Admin-Klasse:

%Vor%

Lassen Sie mich wissen, wenn etwas unklar bleibt.

    
mrts 25.01.2010, 21:10
quelle
0

Vielleicht möchten Sie ein benutzerdefiniertes Adress-Widget erstellen, das die Kaskadierung mit drei Dropdown-Listen behandelt. Sie können sich den Quellcode für das Widget "DateTime" als Anleitung ansehen.

Schauen Sie sich auch Tutorials zum Erstellen von benutzerdefinierten Widgets an, z. B. dieses .

    
Soviut 04.11.2009 03:00
quelle
0
  

Es wäre großartig, wenn die Dropdown-Elemente Elemente basierend auf dem Wert des übergeordneten Elements filtern.

Sie können die Ajax-Formularmaschine von dajaxproject für diesen Teil

    
Lakshman Prasad 04.11.2009 13:24
quelle