2017-12-31 53 views
0

Für jede Zeile von Tabelle A möchte ich in der Lage sein, eine oder mehrere Zeilen aus Tabelle B hinzuzufügen.Django - wo ist das viele zu viele Picker Widget?

Der Django-Administrator hat ein Beispiel, die Benutzerberechtigungsauswahl - ich befestige einen Screenshot.

Django picker for user permissions, a many to many picker

Jeder Benutzer kann eine beliebige Anzahl von Berechtigungen. Die Berechtigungen beginnen auf der linken Seite. Wenn Sie einen hinzufügen, wird er nach rechts verschoben. Sie können sie hin und her bewegen.

Das ist, was ich für zwei meiner eigenen Modelle will. Wie bekomme ich dieses Widget?

Ich dachte zuerst, ich brauchte ein Widget von vielen zu einem, aber bei weiterem Nachdenken, ich denke, das ist viele zu viele. Nachdem ein Benutzer eine Berechtigung erhalten hat, ist diese Berechtigung für andere Benutzer weiterhin verfügbar. Ein Benutzer kann mehrere Berechtigungen haben; Für eine bestimmte Berechtigung kann dieselbe Berechtigung mehreren Benutzern erteilt werden - es müssen viele zu viele sein. Meine zwei Tische funktionieren genauso.

Ich brauche das Widget zum Hinzufügen und Aktualisieren von Aufzeichnungsseiten für Benutzer zugänglich; Ich brauche es nicht auf den Admin-Seiten. (Ich hatte das Glück, ein perfektes Beispiel dafür zu finden, was ich brauche auf dem Benutzer Admin-Seite.)

Antwort

0

In Ihrem admin.py

class your_model_admin(admin.ModelAdmin): 
    ... 
    filter_horizontal = ('field_name',) 

Das gleiche wie permission Feld ein Widget macht für das field_name Feld zu

0

Ich fragte, indem ich ein Ticket in code.djangoproject.com legte.

Die Antwort:

Die Module gibt es, und sie nutzen zu können.

Sie das Widget von

von django.forms.widgets können importieren select

Die filter_horizontal/filter_vertical Widget ist von

von django.contrib.admin.widgets FilteredSelectMultiple importieren

https://code.djangoproject.com/ticket/28993#comment:1

Die Module werden jedoch nicht für die Verwendung auf Formularen angeboten, da sie auf Javascript basieren und die Abwärtskompatibilität nicht garantiert werden kann.

https://code.djangoproject.com/ticket/28993#comment:2

???