首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何序列化Django模型以匹配Bootstrap-tables插件所需的格式?

如何序列化Django模型以匹配Bootstrap-tables插件所需的格式?
EN

Stack Overflow用户
提问于 2019-10-14 23:17:48
回答 1查看 186关注 0票数 0

我正在尝试在服务器端实现bootstrap-table插件,我使用Django rest框架将数据传递到表中,但我总是收到消息“没有找到匹配的记录”,做了一些研究后,我发现需要一个特定的格式才能使插件工作(正如在文档中所看到的:请注意,所需的服务器响应格式取决于指定的是'client‘还是' server’选项。参见以下示例:Without server-side paginationWith server-side pagination)在我的示例中,我使用了以下代码:

1) serializers.py

代码语言:javascript
运行
复制
from rest_framework import serializers
from .models import Datos   

class DatosSerializer(serializers.ModelSerializer):
    class Meta:
        model = Datos            
        fields = (
            'loteInsp',
            'descripcion',
            'fecha',
            'material',
            'batch',
            'acepRech',
            'resultado',
            'limiteInferior',
            'target',
            'limiteSuperior',
            )

2) views.py

代码语言:javascript
运行
复制
from rest_framework import generics
from .models import Datos
from .serializers import DatosSerializer

class DatosViewSet(generics.ListAPIView):
    queryset = Datos.objects.all().order_by('fecha')
    serializer_class = DatosSerializer

3) urls.py

代码语言:javascript
运行
复制
 path('json/', DatosViewSet.as_view(), name='json'),

但是使用这种配置,我在控制台中从服务器获得的结果如下所示:

代码语言:javascript
运行
复制
callback({"count":1064,"next":"http://127.0.0.1:8000/datos/json/?format=jsonp&limit=10&offset=0&order=asc&page=2&search=","previous":null,"results":[{"loteInsp":40004129308,"descripcion":"ALCANFOR P/P","fecha":"2015-01-03","material":15131132,"batch":"50602709L0","acepRech":true,"resultado":4.9,"limiteInferior":4.73,"target":5.26,"limiteSuperior":5.79},{"loteInsp":40004129308,"descripcion":"AC. DE EUCALIPTO P/P","fecha":"2015-01-03","material":15131132,"batch":"50602709L0","acepRech":true,"resultado":1.29,"limiteInferior":1.24,"target":1.33,"limiteSuperior":1.46},...

为了获得bootstrap表所需格式的响应,我必须如何修改序列化程序(或其他东西)?

示例:

代码语言:javascript
运行
复制
{
  "total": 800,
  "totalNotFiltered": 800,
  "rows": [
    {
      "id": 0,
      "name": "Item 0",
      "price": "$0"
    },
    {
      "id": 1,
      "name": "Item 1",
      "price": "$1"
    },
    {
      "id": 2,
      "name": "Item 2",
      "price": "$2"
    },
        ]
    }

非常感谢您提出的任何建议或想法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-16 01:05:51

我已经找到了一种方法让bootstrap-table读取数据,我修改了视图DatosViewSet如下:

代码语言:javascript
运行
复制
from rest_framework.response import Response
from rest_framework.decorators import api_view

@api_view(['GET',])
def api_view_set(request):
    if request.method=='GET':
        datos = Datos.objects.all().order_by('fecha')
        serializer = DatosSerializer(datos, many=True)
        return Response(serializer.data)

urls.py

代码语言:javascript
运行
复制
path('json2/', api_view_set, name='json2'),

通过这些修改,现在数据被加载到Bootstrap-table中,在表头选项中使用下面这一行调用url:

代码语言:javascript
运行
复制
data-url="{% url 'app:json2'%}"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58379672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档