模特课:
class Category(models.Model):
name = models.CharField(max_length=200)
def __str__(self):
return self.name
使用模型的控制器:
class AjaxLayoutView():
@login_required
def categories_ajax(request):
categories = Category.objects.all()
cats = serializers.serialize('json', categories)
return HttpResponse(
json.dumps(cats),
content_type="application/json"
)
TypeError:类型'类别'的对象不是JSON可序列化的 但是使用下一个代码在JavaScript中做出回应:
$.getJSON( "/categories/ajax/", function( json ) {
var src = JSON.parse(json);
console.log(src);
var valuesFromCategorys = [];
for(var i=0;i<src.length;i++)
valuesFromCategorys[i] = src[i].fields.name;
console.log(src);
$('#patient_category').editable({
type: 'select',
title: 'Оберіть нову категорію',
source: valuesFromCategorys,
ajaxOptions: { type:'POST'},
params: function(params) {
var objRequest = {category: params.value, pk:params.pk};
console.log(params.value);
return objRequest;
},
success: function(response, newValue) {
console.log(response);
}
})
答案 0 :(得分:0)
尝试迭代对象,然后创建列表或字典。 然后尝试json.dumps 我们不能直接转储对象。
@login_required
def categories_ajax(request):
categories = Category.objects.all()
cats= json.dumps([(dict(row.items())) for row in categories])
return HttpResponse(
json.dumps(cats),
content_type="application/json"
)
答案 1 :(得分:0)
由于您的视图返回了一个对象数组,因此您可以访问任何序列化的值,如下所示:
$.getJSON("/categories/ajax/", function(json) {
var src = JSON.parse(json);
for (var i = 0; i < src.length; i++) {
var category = src[i];
console.log(category.fields.<field_name>);
}
});