2017-04-10 122 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

試試這個.....^ –

相關問題