Próbuję utworzyć formularz dla biblioteki, w której użytkownik może wykonać 2 czynności: dodać nową książkę lub otworzyć zapisane informacje o istniejącej. Książki mają 2 pola (tytuł i autor). Za każdym razem, gdy tworzona jest nowa książka, jest ona przechowywana w bazie danych. Każda poprzednio utworzona książka jest wyświetlana jako opcja na liście rozwijanej (tylko nazwa). Chcę, aby kiedy użytkownik wybierze opcję z rozwijanej listy, informacja o wybranej książce pojawi się na ekranie.Lista rozwijana Django formularza przechowywanych modeli
Próbowałem 2 różnych podejść, ale żaden z nich nie spełnia moich wymagań. Z jednej strony, po tym pytaniu django form dropdown list of numbers jestem w stanie utworzyć listę rozwijaną i uzyskać wybraną wartość w widokach z kodem tak:
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')
ale chcę moje opcje być wcześniej zapisane książek w baza danych, a nie predefiniowane wartości.
Inne podejście, które próbowałem, to zrobić z szablonu html. Nie mogę utworzyć następującą postać:
<form>
{% for book in list %}
<option value="name">{{ book.name }}</option>
{% endfor %}
</form>
Gdzie książka staje się widokami z tego:
l = Books.objects.all().order_by('name')
W tym drugim przypadku informacje wyświetlane na liście rozwijanej jest jeden, którego chcę, ale ja don wiesz, jak uzyskać wybraną wartość i użyć jej w widokach. Być może używając funkcji javascript?
Moje 2 wymagania to: pokaż prawidłowe informacje na liście (przechowywane w DB przez użytkownika) i być w stanie wiedzieć, który został wybrany.
Wielkie dzięki, że to, co potrzebne! :) – toni
Jak umieścić tę rozwijaną listę w html, czy jest taka sama jak zwykłe formularze? –