使用Django get_queryset()返回字典列表

时间:2019-05-16 12:37:59

标签: django python-3.x mongodb django-rest-framework django-views

在尝试从数据库获取并返回数据时遇到错误。 我正在使用switchableControllerActions返回查询集。我正在使用的命令是get_queryset(),但出现错误'BaseList'对象没有属性'items'

我认为这是由于数据库中的数据所致,我的数据库data = MyModel.objects.filter(account_id=account_id)中有这种格式的数据

Is it due to result has list of dicttionaries

models.py

{
"result" : [ 
        {
            "savings" : 43.0548666420733,
            "count" : 18
        }, 
        {
            "savings" : 387.651510654053,
            "count" : 161
        }],
    }

views.py

from mongoengine import Document, fields


class MyModel(Document):
    result = fields.DictField()

serializers.py

class MyModelViewset(viewsets.ModelViewSet):

    renderer_classes = [renderers.JSONRenderer]
    serializer_class = MyModelSerializer

    def get_queryset(self):
        try:
            data = MyModel.objects.filter(account_id=self.kwargs['account_id'])
            return data
        except Exception as e:
            logger.exception(e)

urls.py

class MyModelSerializer(serializers.DocumentSerializer):
class Meta:
    model = MyModel
    fields = '__all__

1 个答案:

答案 0 :(得分:0)

由于我怀疑错误来自数据库。 我已经更改了

    {
"result" : [ 
        {
            "savings" : 43.0548666420733,
            "count" : 18
        }, 
        {
            "savings" : 387.651510654053,
            "count" : 161
        }],
    }

对此

    {
"result" : {"data":[ 
        {
            "savings" : 43.0548666420733,
            "count" : 18
        }, 
        {
            "savings" : 387.651510654053,
            "count" : 161
        }]}
    }

,现在一切正常。 基本上,result的类型为array,我已将其转换为类型object