wie bekomme ich eine Datenbakabfrage in eine Auswahlform?

Django, Flask, Bottle, WSGI, CGI…
Antworten
Pitwheazle
User
Beiträge: 1050
Registriert: Sonntag 19. September 2021, 09:40

Mein Rechenduell ist fast fertig. Die Eingaben der Duellanten werden in einem Protokoll Template aufgezeigt. Das sieht etwa so aus:
Bild
Da das schnell etwas unübersichtlich werden kann, möchte ich die Ausgabe noch nach einzelnen Duellanten filtern können. Diese finden sich in der Tabelle "Duellant":
Ich vermute, dies lässt sich mit einer Form bewerkstellige und habe diese auch schon im Template oben eingefügt. Ich habe auch schon eine Form erstellt, habe aber keine Ahnung, wie ich die Duellanten aus der Tabelle Duellant da reinbekomme:

Code: Alles auswählen

class DuellProtokollFilter(forms.Form):
    auswahl = forms.ChoiceField(label='Filter', choices=[("all",'Alle Teilnehmer'),])
... wie ich Django kenne, geht das ganz einfach - oder nicht?
Und bei der Gelegenheit: Was muss ich machen, damit das "anwenden" in der Zeile mit dem Auswahlfeld steht?

Code: Alles auswählen

    <form action="{% url 'duell_protokoll' gruppe.id %}" method="POST">
        {% csrf_token %}
        {{form}}
        <input type="submit" value="anwenden">
    </form> 
einfachTobi
User
Beiträge: 510
Registriert: Mittwoch 13. November 2019, 08:38

Du kannst ein ModelChoiceField verwenden.
Pitwheazle
User
Beiträge: 1050
Registriert: Sonntag 19. September 2021, 09:40

Toll ... wenn man weiß wo man suchen muss! Danke! Noch zwei Fragen:
Wie bekomme ich meine Bedingung (profil__gruppe = gruppe) für den Filter in die Form (wahrscheinlich auch ganz einfach)?
Und dann hätte ich gerne als Rückmeldung nur den Inhalt von "name"

Code: Alles auswählen

class DuellProtokollFilter(forms.Form):
    auswahl = forms.ModelChoiceField(queryset=Duellant.objects.filter(profil__gruppe=1), empty_label="(alle)", 
        fields = ['name',])
... das mit "fields = ['name',]" geht jedenfalls nicht.
Antworten