首页 > 解决方案 > 如何将下拉列表的选定值更新到数据库

问题描述

我得到了下拉列表的值,即费用.id 和费用类型。在数据库中,我查找 a​​jax 发送的 id==expense.id 的费用对象,以更新其类型(expense_type)。所以我需要同时发送费用.id 和费用.type 来使用 ajax 进行服务器。我不知道如何在 jQuery 和 html 中执行。下面是我的代码,我收到错误“未找到:/polls/17/project_detail/ajax/update_form/”

<form  action="/ajax/update_form/" method="POST" id="selection-form">
{% csrf_token  %}

<select id="select_dropdown">
{% for expense in expenses %}
    {% if project.id and expense.city %}
        <option value="{{expense.id}}" selected="selected">{{expense.expense_type}}</option>
    {% else %}
        <option value="{{expense.id}}">{{expense.expense_type}}</option>
    {% endif %}
{% endfor %}
</select>
<td><input type="submit" value="Save"></td>

</form>

=====js====

        $('#selection-form').on('submit', function(event) {
        event.preventDefault();
        console.log("form_submitted");
        create_post();
        });

        function create_post(){
                console.log("update fucntion is working!");
                var value = $("#select_dropdown").find(":selected").val();
                var text = $("#select_dropdown option:selected").text();
                $.ajax({
                        //url: "{% url 'update_form' %}",
                        url: "ajax/update_form/",
                        method: "POST",
                        data: {
                                "value": value,
                                "text": text,
                                //"pro_expense": pro_expense,
                                //"id": valueSelected,
                                csrfmiddlewaretoken: '{{ csrf_token }}',
                        },
                        //dataType: "json",
                        success: function(data){
                                console.log(data);
                        },
                        error: function(error_data){
                                console.log("error")
                                console.log(error_data)
                        }

                });
                return false;
        };  

====views.py=====

@csrf_exempt
def update_form(request):
        if request.method == "POST" and request.is_ajax():
                value = request.POST.get('value')
                text = request.POST.get('text')
                expense = Expense.objects.get(pk = value)
                expense.expense_type = text
                expense.save()

        return HttpResponse({"result": "success"}, content_type="application/json")

===urls.py===

url(r'^(?P<project_id>[0-9]+)/project_detail/$', views.project_detail, name='project_detail'),
url(r'^ajax/update_form/$', views.update_form, name = 'update_form'),

错误是“未找到:/polls/17/project_detail/ajax/update_form/”。请帮忙。任何帮助将不胜感激!

标签: pythondjango

解决方案


推荐阅读