【发布时间】:2013-04-09 23:10:29
【问题描述】:
我正在尝试为图书馆创建一个表单,用户可以在其中执行 2 项操作:添加新书或打开现有书的存储信息。书籍有 2 个字段(标题和作者)。 每次创建新书时,都会将其存储在数据库中。任何以前创建的书都显示为下拉列表中的一个选项(只有名称)。我希望当用户从下拉列表中选择一个选项时,所选书籍的信息会出现在屏幕上。
我一直在尝试 2 种不同的方法,但它们都不能满足我的要求。 一方面,遵循这个问题django form dropdown list of numbers 我可以创建一个下拉列表,并使用类似这样的代码在视图中获取选定的值:
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')
但我希望我的选项是以前存储在数据库中的书籍,而不是预定义的值。
我尝试过的另一种方法是从 html 模板中进行。在那里我创建了以下表单:
<form>
{% for book in list %}
<option value="name">{{ book.name }}</option>
{% endfor %}
</form>
书籍在此视图中呈现的位置:
l = Books.objects.all().order_by('name')
在第二种情况下,下拉列表中显示的信息是我想要的,但我不知道如何获取所选值并在视图中使用它。也许使用 javascript 函数?
所以我的两个要求是:在列表中显示正确的信息(用户存储在数据库中)并能够知道选择了哪一个。
【问题讨论】: