Grouped CheckboxSelectMultiple in der Django-Vorlage

8

Wie kann ich Checkboxen, die von CheckboxSelectMultiple von einem verwandten Modell erstellt wurden, gruppieren?

Dies wird am besten anhand eines Beispiels demonstriert.

models.py:

%Vor%

forms.py:

%Vor%

views.py:

%Vor%

template.html:

%Vor%

Das obige erzeugt die folgende Ausgabe:

%Vor%

Was ich möchte, ist, dass die Feature-Checkboxen nach Feature-Kategorien gruppiert werden (basierend auf ForeignKey ):

%Vor%

Wie kann ich das erreichen? Ich habe versucht, das Schablonen-Tag {% regroup %} ohne Erfolg zu verwenden.

Irgendwelche Ratschläge sehr geschätzt.

Danke.

    
gjb 16.12.2012, 01:15
quelle

1 Antwort

14

Sie müssen das benutzerdefinierte Widget CheckboxSelectMultiple schreiben. Mit dem Snippet habe ich versucht, das CheckboxSelectMultiple -Feld iterierbar zu machen, indem ich das category_name als Attribut im Feld attrs hinzufüge. . Damit ich später regroup -Tag in der Vorlage verwenden kann.

Der unten stehende Code wird je nach Bedarf von Snippet modifiziert. Natürlich kann dieser Code sauberer und generischer gemacht werden, aber in diesem Moment ist er nicht generisch.

forms.py

%Vor%

Dann in Vorlage:

%Vor%

Ergebnisse : Ich habe den Ländernamen in der Kategorietabelle hinzugefügt, und den Städtenamen in der Merkmalstabelle, so dass ich in der Lage war, die Städte (Merkmale) nach Land (Kategorie) neu zu gruppieren

    
Aamir Adnan 18.12.2012, 13:32
quelle