Python Django-如何根据前端的下拉选择更新视图?
我想在前端当用户从下拉列表中选择一个项目时,会向Django后端发送一种信号,其中包含所选项目的主键 Models.py:Python Django-如何根据前端的下拉选择更新视图?,python,django,Python,Django,我想在前端当用户从下拉列表中选择一个项目时,会向Django后端发送一种信号,其中包含所选项目的主键 Models.py: class Company(models.Model): name = models.CharField(max_length=10, blank=True, null=True) code = models.CharField(max_length=2, blank=True, null=True) 我将此模型发送到HTML并解压缩: {% load s
class Company(models.Model):
name = models.CharField(max_length=10, blank=True, null=True)
code = models.CharField(max_length=2, blank=True, null=True)
我将此模型发送到HTML并解压缩:
{% load staticfiles %}
{% load i18n %}
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<form action="" method="GET" id="selection-form">
{% csrf_token %}
<select>
{% for company in company_list %}
<option>
{{ company.name }}
</option>
{% endfor %}
</select>
<input type="button" value="Update" id="selection-button">
</form>
</body>
</html>
实际上,我不确定我是否在views.py中正确地执行了该操作。从前端发送什么样的信号有助于识别所选选项的主键?您需要修改html标签,将
id
添加到选择
.html
最后,在视图中,您可以这样使用它
views.py
您需要修改html标签,以便将id
添加到select
.html
最后,在视图中,您可以这样使用它
views.py
如果希望在选择元素时更新表单(即不提交整个表单),则需要使用AJAX。此外,Python中没有===
。但是是is
操作符。如果希望在选择元素时更新表单(即不提交整个表单),则需要使用AJAX。此外,Python中没有=
。但是是is
操作符。
def company_selected(request):
if request.method === 'GET':
selection = request.GET.get() // Not sure what to have within .get()
selected_company = Company.objects.filter(pk=selection)
return selected_company
<select id = "company-list">
{% for company in company_list %}
<option value="{{ company.id }}">
{{ company.name }}
</option>
{% endfor %}
</select>
// ajax call on your button click
var url = $( '#selection-form' ).attr( 'action' );
$("selection-button").click(function(e) {
e.preventDefault();
$.ajax({
type: "GET",
url: url,
data: {
id: $('#company-list').val();,
},
success: function(result) {
alert('ok');
},
error: function(result) {
alert('error');
}
});
});
def company_selected(request):
if request.method == 'GET':
selection = request.GET.get('id',None)
if selection:
selected_company = Company.objects.filter(pk=selection)
return selected_company
else:
return #anything you want to send when no id value is sent in the ajax call