2017-04-23 6 views
1

DjangoとShield UIを使って新しいですが、私がしようとしているのは、シールドグリッドのデータを取得しようとしていて、サーバからリモートデータを取得するリクエストです。私は次のコードを持っています。DjangoからShield UIグリッドにデータを渡すにはどうすればいいですか?

これは私のmodel.pyが問題、サーバーへのリクエストがOKやっている

class ParametrosDiagnosticos(models.Model): 
descripcion=models.CharField(max_length=1000) 
codigo=models.CharField(max_length=100) 
sexo=models.CharField(max_length=10,default='Ambos') 
estado=models.CharField(max_length=100, default='Activo') 
estado_logico=models.IntegerField(default=1) 

と私のview.py

def ListadoDiagnosticos(request): 
if request.user.is_authenticated: 
    if request.method=='GET' and request.is_ajax(): 
     objeto=ParametrosDiagnosticos.objects.all() 
     data = serializers.serialize('json', objeto, fields=('pk','descripcion','codigo')) 
     return JsonResponse(data,safe=False); 

である私の.js

$("#id_table_diagnosticos").shieldGrid({ 
        dataSource: { 
         remote: { 
          read: { 
           url: "/atender/ListadoDiagnosticos/", 
           dataType: "json", 
           operations: ["sort", "skip", "take"], 
           data: function (params) { 
            var odataParams = {}; 
            if (params.sort && params.sort.length) { 
             odataParams["$orderby"] = window.orderFields[params.sort[0].path].path + (params.sort[0].desc ? " desc" : ""); 
            } 
            if (params.skip != null) { 
             odataParams["skip"] = params.skip; 
            } 
            if (params.take != null) { 
             odataParams["top"] = params.take; 
            } 
            return odataParams; 
           } 
          } 
         }, 
         schema: { 
          data: "fields", 
          total: function (result) { 
           return result["odata.count"]; 
          }, 
          fields: window.orderFields = { 
          // "pk": { path: "pk" }, 
           "descripcion": { path: "descripcion" }, 
           "codigo": { path: "codigo" }, 
          } 
         } 
        }, 
        paging: true, 
        sorting: true, 
        columns: [ 
        // { field: "pk", title: "ID", width: 80 }, 
         { field: "descripcion", title: "Descripción", width: 180 }, 
         { field: "codigo", title: "Código", width: 100 }, 
        ] 
       }); 
      }); 

ですデータを返すと、ブラウザのコンソールで次のエラーが発生します。

shieldui-all.min.js:4 Uncaught TypeError: Cannot read property 'map' of undefined 
at e (shieldui-all.min.js:4) 
at init.fields (shieldui-all.min.js:5) 
at init.process (shieldui-all.min.js:5) 
at init._success (shieldui-all.min.js:5) 
at e (bundled.js:2) 
at Object.z.func.i.success (shieldui-all.min.js:4) 
at j (bundled.js:2) 
at Object.fireWith [as resolveWith] (bundled.js:2) 
at x (bundled.js:5) 
at XMLHttpRequest.b (bundled.js:5) 

ありがとうございました。

答えて

0

グリッドのdataSource.schemaが正しく設定されていることを確認してください。それに関するドキュメントはhereです。

たとえば、サーバーから返されたデータにオブジェクトのリストが含まれている場合は、dataプロパティを設定する必要はありません。

関連する問題