我正在呈现一个显示整数列表的下拉列表。这是窗体/视图中唯一的字段。提交表单后,所选的整数应传递给提交上一个表单时呈现的下一个视图的URL。你知道吗
我尝试这个的时候得到了404。你知道吗
以下是我目前正在尝试的:
你知道吗表单.py你知道吗
#this is the dropdown field
class ManifestDropDown(forms.Form):
reference = forms.ModelChoiceField(queryset=Orders.objects.values_list('reference', flat=True).distinct(),
empty_label=None)
你知道吗视图.py你知道吗
#this is the view where the dropdown is submitted
def manifest_references(request):
if request.method == 'POST':
form = ManifestDropDown(request.POST)
if form.is_valid():
reference_id = form.cleaned_data.get('reference')
form.save()
return render('manifest', reference_id=reference_id)
query_results = Orders.objects.all()
reference_list = ManifestDropDown()
context = {
'query_results': query_results,
'reference_list': reference_list,
}
return render(request, 'manifest_references.html', context)
#this is the view where the value should be displayed in the url
def manifest(request, reference_id):
form = CreateManifestForm(request.POST)
if request.method == "POST":
....
data = Manifests.objects.all().filter(reference__reference=reference_id)
form = CreateManifestForm(initial={
'reference': Orders.objects.get(reference=reference_id),
})
total_cases = Manifests.objects.filter(reference__reference=reference_id).aggregate(Sum('cases'))
context = {
'reference_id': reference_id,
'form': form,
'data': data,
'total_cases': total_cases['cases__sum'],
}
return render(request, 'manifest_readonly.html', context)
你知道吗网址.py你知道吗
#url which displays the manifest view above
url(r'^manifest/(?P<reference_id>\d+)/$', manifest, name='manifest'),
url(r'^references_manifests', manifest_references, name='references_manifests'),
舱单_参考.html你知道吗
<div class="container">
<br>
<br>
<br>
<form method="POST" action="references_manifests">
{% csrf_token %}
{{ reference_list }}
<button type="submit" class="btn btn-primary" name="button">Create Proforma</button>
</form>
</div>
要动态更改您实际提交到的URL,您需要使用JavaScript。你知道吗
但另一种方法是提交回
manifest_references
视图,然后从那里重定向到manifest
。(注意,无论如何,在成功提交后,您应该始终重定向,而不是呈现。而且不需要调用form.save()
,这不是一个模型表单,因此没有什么可保存的。)你可以做两件事:
第一个应该这样做:
第二个可以这样做:
你选择哪一个并不重要,尽管我建议将用户重定向到正确的页面,因为这样刷新就不会重新发送用户输入的表单。你知道吗
相关问题 更多 >
编程相关推荐