javascript - 如何从 python django 后端获取对象的描述到前端的 AJAX?

标签 javascript jquery python ajax django

在模型中我指定了对象描述

def __unicode__(self): ...............................

而且我希望在使用 Ajax 生成的动态下拉框中看到此描述。 但我只是在下拉列表中得到 [object Object]。

我的数据按以下方式流动:

1-我的 api 中有 sanitizer

class LeaseTermSerializer(serializers.ModelSerializer):
class Meta:
    model=LeaseTerm       
    fields = '__all__' 

2-我有 api 方法在 View 中

@api_view(['GET']) @csrf_exempt def get_leaseterm(request, tid):
    leasetermobj = LeaseTerm.objects.filter(lease=tid,is_active = True)
    leaseterm_serializer = LeaseTermSerializer(leasetermobj, many=True)
    response = Response(leaseterm_serializer.data)
    return Response(response.data,status=status.HTTP_200_OK)

3-在我的模板中,我是这样构建的

function getleaseterm() {

    //get a reference to the select element
    $select = $('#leaseterm');
    //request the JSON data and parse into the select element
    var l_id = ($("select[name='lease'] option:selected").attr('value'));
    l_url = "/api/get_leaseterm/"+l_id+"/";

    $.ajax({
      url: l_url,
      dataType:'JSON',
      success:function(data1){
        //clear the current content of the select
        $select.empty();
        $select.append('<option value="-1">Select term </option>');
        //iterate over the data and append a select option

        $.each(data1, function(key, val){
          $select.append('<option value="' + val.id + '">' + val + '</option>');
        })
      },

    });

}

问题是,如果我没有指定要显示的字段,我在下拉列表中显示的“val”值将显示下拉列表中所有值的 [object Object] 当我希望它显示我拥有的对象的描述时为我的模型指定。

如何在下拉列表中查看我的对象描述?

最佳答案

在你的情况下 valserializer.data(意味着你的序列化器声明的 json 对象)所以结果你看到 [object Object],你对可以使用这种方式的 django 模板感到困惑。 但你可以,将 charfield 添加到你的序列化程序中,然后使用它

as_char = serializers.CharField(source='__unicode__')

在 html 中:

$select.append('<option value="' + val.id + '">' + val.as_char + '</option>');

关于javascript - 如何从 python django 后端获取对象的描述到前端的 AJAX?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46385431/

相关文章:

Javascript 引用字符串到数组

javascript - href 链接在转到链接之前执行 javascript

python - 要合并的大文件。如何防止 Pandas 合并中的重复项?

python - 读取文件直到python中的特定行

javascript - angularjs 复选框验证至少两个

asp.net - 调用 ASP.NET AJAX WebServiceProxy.invoke() Javascript 方法时出现问题

javascript - JQuery (document).ready 在文档准备好之前仍然运行?

python - 如何在不规则多边形内找到一个点

javascript - 口译员和安全口译员有什么区别?

javascript - 使用箭头键和智能延迟加载实现有机列表浏览