我正在做依赖选择,我在查询时遇到了问题,这里是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的值。
答案 0 :(得分:0)
尝试将ID设置为:
var option = $('<option></option>', {value:(paises[0].aux.id+1), text:desc});
答案 1 :(得分: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')
您可以找到文档here。