0

我正在做选择依赖,在进行查询时遇到问题,这里是 js

function cargar_paises() {
$.getJSON('cargar_paises', {}, function (data) {
    $('#paises').empty();
    $('#paises').append('<option value="0">Seleccione ...</option>');
    $.each(data, function (id, desc) {
        var option = $('<option></option>', {value:(id+1), text:desc});
        $('#paises').append(option);
        });
    });
}

和我的看法

def cargar_paises(request):
if request.is_ajax:

    pais = Pais.objects.all()
    paises = []

    for s in pais:
        aux = []
        id = s.pk
        aux.append(id)
        nombre = s.nombre
        aux.append(nombre)
        paises.append(aux)

    return HttpResponse(json.dumps(paises), mimetype='aplication/json')

问题是当我打印select中的值并将id发送到另一个查询时,我取的值是select的索引而不是id_pais的值。

4

2 回答 2

0

尝试将 id 设置为:

var option = $('<option></option>', {value:(paises[0].aux.id+1), text:desc});
于 2013-02-17T16:44:05.137 回答
0

您可以使用字典列表而不是列表列表更好地解决这个问题,即使使用 dJango .values(),但为了简单起见,您可以使用完全相同的方法,

function cargar_paises() {
$.getJSON('cargar_paises', {}, function (data) {
    $('#paises').empty();
    $('#paises').append('<option value="0">Seleccione ...</option>');
    $.each(data, function (item) {
        var option = $('<option></option>', {value:item.id, text:item.nombre});
        $('#paises').append(option);
        });
    });
}

并且在视图中,

def cargar_paises(request):
    if request.is_ajax:

        pais = Pais.objects.all()
        paises = []

        for s in pais:
            aux = {}
            aux['id'] = s.pk
            aux['nombre'] = s.nombre
            paises.append(aux)

        return HttpResponse(json.dumps(paises), mimetype='aplication/json')

请记住,您可以将 Python 字典映射到 Json 对象,并将 Python 列表映射到 Json 数组,另一个很好的提示是使用django-dajaxice它是一个非常好的工具来做你想做的事,无论如何从 dJango 中提取这种东西是好的.

编辑

我真的想了想,.values()在查询集中使用,你的视图,

def cargar_paises(request):
    if request.is_ajax:
        paises = Pais.objects.values('id', 'nombre')
        return HttpResponse(json.dumps(paises), mimetype='aplication/json')

你可以在这里找到文档。

于 2013-02-17T16:56:05.500 回答