Возврат списка словарей с использованием django get_queryset () - PullRequest
0 голосов
/ 16 мая 2019

Я столкнулся с ошибкой при попытке получить и вернуть данные из базы данных.Я использую get_queryset() возвращая набор запросов.Я использую команду data = MyModel.objects.filter(account_id=account_id), но получаю ошибку У объекта 'BaseList' нет атрибута 'items' .

Я думаю, что это из-за моих данных в базе данных, яесть данные в этом формате в моей БД, Is it due to result has list of dicttionaries

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

models.py

from mongoengine import Document, fields


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

views.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)

serializers.py

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

urls.py

url(r'^account/(?P<account_id>\w+)/myviews',MyModelViewset.as_view({'get':'list'}))

1 Ответ

0 голосов
/ 17 мая 2019

Как я и подозревал, из базы данных исходила ошибка. Я изменил это

    {
"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

...