2017-04-10 116 views
0

模型类:类型错误:类型 '类别'(模型)的对象不是JSON序列

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" 
    ) 

类型错误:类型 '类别' 的对象是不是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

错误。什么'view'处理这个网址? –

+0

是的,我只是没有正确理解,我有一些英语问题,我想更好地研究它) –

+0

错误在这里:“value = Category.objects.get(name = value)”,我发现它错了所有这一次。非常感谢你)@nik_m –

回答

0

由于您的视图返回对象的数组,你可以这样访问任何序列化值:在`/ patient_edit/AJAX /`URL发生

$.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>); 
    } 
}); 
+0

是的,我做到了。我可以通过工作来访问这些字段。但是,我在标题中写的错误是什么@nik_m –

+0

如果上面的'HttpResponse'类型:'print(json.dumps(cats))',你会得到什么?因为我只是在本地进行测试并且工作得很好! –

+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" 
) 
+0

可以请您举一些例子,我可以试试这个: categories_to_dict = model_to_dict(类别) 猫= serializers.serialize( 'JSON',categories_to_dict) 返回的HttpResponse( json.dumps(猫), CONTENT_TYPE =“应用/ json“ ) 但它不起作用:AttributeError:类型对象'Category'没有属性'id' –

+0

试试这个.....^ –

相关问题