【问题标题】:Django crispy input from Ajax data来自 Ajax 数据的 Django 清晰输入
【发布时间】:2021-11-04 12:20:57
【问题描述】:

我需要自动填充脆字段,所以我使用 ajax 函数从我的数据库中调用所需的数据:

views.py

def load_record(request):
    PUITS_id = request.GET.get('PUITS')
    record = SurveillanceDesPuits.objects.filter(PUITS_id__id__exact=PUITS_id)[:1]
    my_record= [str(record[0].PUITS) , str(record[0].MODE), str(record[0].CS)]
    print(my_record)
    return render(request, 'measure/Surveill_Wells/Add_wellMntr.html', {'record': my_record})

我的 HTML 文件是:

    <form method="POST" id="SurveillanceDesPuits_F" data-record-url="{% url 'ajax_load_record' %}">
        {% csrf_token %}
          <!-- form  from views.py-->
        <div class="border p-2 mb-3 mt-3 border-secondary">
                    <div class="form-row">
                <div class="form-group col-md-3 mb-0">
                    {{ form.PUITS|as_crispy_field }}
                </div>
                <div class="form-group col-md-3 mb-0">
                    {{ form.CS|as_crispy_field }}
                </div>
                <div class="form-group col-md-3 mb-0">
                    {{ form.MODE|as_crispy_field }}
                </div>
            </div>
        </div>
        <input class="btn btn-success mb-4" type="submit" value="ADD Record">
    </form>

<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script>
  $("#id_PUITS").change(function () {
    var url = $("#SurveillanceDesPuits_F").attr("data-record-url");  
    var PUITSId = $(this).val();  
    $.ajax({                       
      url: url,                    
      data: {
        'PUITS': PUITSId       
      },
      success: function (data) {   
        $("#id_MODE").html(data);
      }
    });
  });
</script>

从下拉列表中选择一个项目(PUITS)后,我想从接收到的数据中自动设置 CS 和 MODE 的值。 所以在控制台中,它给了我这个错误:

    File "D:\WikiPED\venv\lib\site-packages\crispy_forms\templatetags\crispy_forms_filters.py", line 102, in as_crispy_field
    raise CrispyError("|as_crispy_field got passed an invalid or inexistent field")
crispy_forms.exceptions.CrispyError: |as_crispy_field got passed an invalid or inexistent field
[07/Sep/2021 17:30:05] "GET /ajax/load-record/?PUITS=1 HTTP/1.1" 500 25693

我在这段代码中遗漏了什么? 谢谢

【问题讨论】:

    标签: html django ajax django-crispy-forms ajaxform


    【解决方案1】:

    我将views.py更改为:

    def load_record(request):
        PUITS_id = request.GET.get('PUITS')
        record = SurveillanceDesPuits.objects.filter(PUITS_id__id__exact=PUITS_id)[:1]
        return JsonResponse({'record2': list(record2.values())}, safe=False)
    

    脚本将是:

    <script type="text/javascript">
        $.ajax({ 
            type: 'GET' ,               
            url: url,              
            data: {'PUITS': PUITSId },
            dataType: "json",
            success: function (response){           
                const object = response.record2[0]
                $("#id_PUITS").val(object.PUITS_id);
                $("#id_DATE_TEST").val(object.DATE_TEST);
                $("#id_MODE").val(object.MODE);
                $("#id_CS").val(object.CS);
                $("#id_SITUATION").val(object.SITUATION);
                $("#id_DUSE").val(object.DUSE);
                $("#id_PRES_TBG").val(object.PRES_TBG);
                $("#id_PRES_CSG").val(object.PRES_CSG);
                $("#id_PRES_AVD").val(object.PRES_AVD);
                $("#id_RESEAU_GL").val(object.RESEAU_GL);
                $("#id_ANNULAIRE_TECH").val(object.ANNULAIRE_TECH);
                $("#id_OBSERVATION").val(object.OBSERVATION);
                $("#id_Controle_Pression_ENSP").val(object.Controle_Pression_ENSP);
                $("#id_Test_Puits").val(object.Test_Puits);
                $("#id_Controle_Pression_DP").val(object.Controle_Pression_DP);
            },
    
            });
            return false;
            });
    </script>
    

    【讨论】:

      猜你喜欢
      • 2020-01-24
      • 1970-01-01
      • 2011-03-20
      • 2021-01-17
      • 2013-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多