Seite 1 von 1

wie bekomme ich eine Datenbakabfrage in eine Auswahlform?

Verfasst: Mittwoch 14. August 2024, 13:12
von Pitwheazle
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> 

Re: wie bekomme ich eine Datenbakabfrage in eine Auswahlform?

Verfasst: Mittwoch 14. August 2024, 13:43
von einfachTobi
Du kannst ein ModelChoiceField verwenden.

Re: wie bekomme ich eine Datenbakabfrage in eine Auswahlform?

Verfasst: Mittwoch 14. August 2024, 16:34
von Pitwheazle
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.