HTML-Eingabefeld in Django admin.py filter

8

Ich möchte Daten in Django (admin.py) mit Text filtern, der im HTML-Eingabefeld geschrieben wurde. Ich muss Unternehmen nach Stadt filtern, in der sie sind, und die Liste aller Städte ist zu lang. Ich möchte die Liste aller Städte im Filter durch eine Texteingabe ersetzen. Ich habe etwas Ähnliches gefunden hier Ссылка , aber es gibt zwei Probleme:

  1. Autor hat models.py nicht gepostet, daher ist es schwierig Code für meine Bedürfnisse zu ändern (+ keine Kommentare)
  2. da wird die Klasse UserFieldFilterSpec (RelatedFilterSpec) verwendet: aber ich muss AllValuesFilterSpec anstelle von RelatedFilterSpec (mehr in der Datei django / contrib / admin / filterspecs.py) verwenden, weil die Liste der Städte in der gleichen Klasse wie die Firma ist nach Klassen von Städten und sie sollten auf die Firma durch einen Fremdschlüssel verweisen (ManyToMany-Beziehung), aber aus bestimmten Gründen muss dies auf diese Weise geschehen)

wichtiger Teil von models.py sieht in etwa so aus

%Vor%

und etwas von admin.py

%Vor%

Also nochmal, ich muss: 1. Anstelle der Liste der Städte wird eine Texteingabe im Django-Filter angezeigt 2. Nach der Eingabe von Stadt Neme in dieser Texteingabe, filtern Sie Daten nach Stadt (Anfrage für die Filterung kann mit einigen senden Schaltfläche oder über Javascript gesendet werden)

Vielen Dank für alle Beiträge.

    
Jazzuell 03.07.2011, 13:37
quelle

3 Antworten

12

Falls jemand das noch braucht. Es ist wenig haschisch in der Vorlage, aber ohne ein Stück js implementiert.

filters.py

%Vor%

textinput_filter.html

%Vor%

Dann nach Ihren Modellen

%Vor%

Der fertige Filter würde so aussehen.

    
r_black 14.12.2013 22:27
quelle
2

Es ist zwar nicht Ihre Frage, aber das klingt nach einer perfekten Lösung für Django-Selectables , mit der Sie arbeiten können Nur ein paar Zeilen fügen ein AJAX-aktiviertes CharField-Formular hinzu, dessen Einträge aus der Liste der Städte ausgewählt werden. Sehen Sie sich die Beispiele an, die im obigen Link aufgeführt sind.

    
Doug-W 03.07.2011 14:18
quelle
0

Ich führe Django 1.10, 1.11 und r_black aus Lösung passte nicht ganz, weil Django sich darüber beschwert hat, dass Filterfelder von 'FieldListFilter' erben müssen.

Eine einfache Änderung, damit der Filter von FieldListFilter erbt, sorgte dafür, dass Django sich beschwerte und nicht für jedes Feld gleichzeitig eine neue Klasse angeben musste.

%Vor%

templates / admin / textinput_filter.html (unverändert):

%Vor%

Verwendung:

%Vor%     
velis 13.05.2017 02:13
quelle

Tags und Links