django form dropdown-Liste der gespeicherten Modelle

Ich versuche ein Formular erstellen, für eine Bibliothek, wo ein Benutzer ausführen kann 2 Aktionen aus: fügen Sie ein neues Adressbuch, oder öffnen Sie die gespeicherte Informationen eines bereits vorhandenen. Bücher haben 2 Felder (Titel und Autor).
Jedes mal, wenn ein neues Buch angelegt wird, ist es gespeichert in der Datenbank. Alle zuvor erstellten Buch ist als option in einer dropdown-Liste (nur die Namen). Ich will, dass, wenn ein Benutzer wählt eine option aus der dropdown-Liste, die Informationen von dem ausgewählten Buch erscheint auf dem Bildschirm.

Ich habe versucht 2 verschiedene Ansätze, aber keiner von Ihnen erfüllt meine Anforderungen.
Auf der einen Seite, nach dieser Frage django form dropdown-Liste von zahlen ich bin in der Lage, um eine dropdown-Liste erstellen, und der ausgewählte Wert bei Ansichten mit etwas code wie:

class CronForm(forms.Form):
    days = forms.ChoiceField(choices=[(x, x) for x in range(1, 32)])

def manage_books(request):
    d = CronForm()
    if request.method == 'POST':
        day = request.POST.get('days')

Aber ich möchte meine Optionen zu den vorher gespeicherten Bücher in der Datenbank, und nicht vorab definierte Werte.

Einen anderen Ansatz habe ich versucht zu tun, die es aus dem html-template. Dort erstelle ich die folgende form:

<form>
    {% for book in list %} 
        <option value="name">{{ book.name }}</option>
    {% endfor %}   
</form>

Buch, wo gerendert wird, bei der Aussicht von diesem:

l = Books.objects.all().order_by('name')

In diesem zweiten Fall die Informationen gezeigt, auf die dropdown-Liste ist die, die ich will, aber ich weiß nicht, wie man den ausgewählten Wert und verwenden Sie es zu sichten. Vielleicht mit Hilfe einer javascript-Funktion?

Also meine 2 sind die Anforderungen: zeigen Sie die richtigen info in der Liste (gespeichert in der DB durch den Benutzer) und in der Lage sein zu wissen, was man ausgewählt wurde.

InformationsquelleAutor toni | 2013-04-17

Schreibe einen Kommentar