Как я могу передать данные из Django в Shield UI Grid?

Я новичок в использовании Django и Shield UI. Я пытаюсь получить данные для shieldGrid и сделать запрос на получение удаленных данных с сервера. У меня есть следующий код.

это мой.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 },
                  ]
              });
          });

моя модель

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

Запрос к серверу выполняется нормально, проблема в том, что когда я возвращаю данные, я получаю следующую ошибку на консоли моего браузера.

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)

Спасибо за помощь.

1 ответ

Убедитесь, что ваша решетка dataSource.schema настроен правильно. Документацию об этом можно найти здесь.

Например, если ваши данные, возвращаемые с сервера, содержат список объектов, вам не нужно устанавливать его data имущество.

Другие вопросы по тегам