Sto provando a creare un modulo per una libreria in cui un utente può eseguire 2 azioni: aggiungere un nuovo libro o aprire le informazioni memorizzate di uno esistente. I libri hanno 2 campi (titolo e autore). Ogni volta che viene creato un nuovo libro, questo viene archiviato nel database. Qualsiasi libro creato in precedenza viene mostrato come opzione in un elenco a discesa (solo il nome). Voglio che quando un utente seleziona un'opzione dall'elenco a discesa, le informazioni del libro selezionato vengono visualizzate sullo schermo.elenco a discesa modulo django dei modelli memorizzati
Ho provato 2 approcci diversi, ma nessuno di essi soddisfa i miei requisiti. Da un lato, a seguito di questa domanda django form dropdown list of numbers sono in grado di creare un elenco a discesa, e ottenere il valore selezionato in vista con un certo codice del genere:
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')
Ma voglio le mie opzioni di essere i libri precedentemente registrati il data base e non i valori predefiniti.
Un altro approccio che ho provato è quello di farlo dal modello html. Ci creo il seguente modulo:
<form>
{% for book in list %}
<option value="name">{{ book.name }}</option>
{% endfor %}
</form>
Dove libro è reso a vista da questo:
l = Books.objects.all().order_by('name')
In questo secondo caso le informazioni visualizzate l'elenco a discesa è quello che voglio, ma io don sapere come ottenere il valore selezionato e utilizzarlo nelle visualizzazioni. Forse usando una funzione javascript?
Quindi i miei 2 requisiti sono: mostrare le informazioni corrette nella lista (memorizzate nel DB dall'utente) ed essere in grado di sapere quale è stato selezionato.
Grazie mille, che è quello che mi serviva! :) – toni
Come si inserisce questo modulo nell'elenco a discesa in html, è lo stesso dei moduli normali? –