我正在尝试为库创建一个表单,用户可以在其中执行2个操作:添加新书或打开现有存储的信息 . 书籍有2个字段( Headers 和作者) . 每次创建新书时,它都存储在数据库中 . 任何以前创建的书籍都会在下拉列表中显示为选项(仅限名称) . 我希望当用户从下拉列表中选择一个选项时,所选书籍的信息将显示在屏幕上 .
我一直在尝试两种不同的方法,但它们都没有满足我的要求 . 一方面,按照这个问题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函数?
所以我的2个要求是:在列表中显示正确的信息(由用户存储在DB中)并且能够知道哪个被选中 .
1 回答
你应该使用ModelChoiceField .
然后你的意见,它应该看起来像这样:
要添加新书或编辑新书,您应该使用ModelForm . 然后在那个视图中你'll check if it'是一个新的形式
要么