Python Django-如何根据前端的下拉选择更新视图?

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

我想在前端当用户从下拉列表中选择一个项目时,会向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 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