2017-01-17 8 views
0

У меня есть таблица заказов, которая содержит ID, store_name, order_date, ..... Я хочу создать конечную точку, которая возвращает мне JSON, который состоит из Count of Orders из всех магазины. Что-то выглядит следующим образом:DjangoRestFramework: Не удалось вернуть счет в ответе JSON

[{store_name: 'Target', count: 10}, {store_name: 'Walmart', count: 20}, {store_name: 'Costco', count: 5}] 

Запрос я написал это:

queryset = Stores.objects.all().values('store_name').annotate(total=Count('store_name')) 

При печати QuerySet, я получаю то, что мне нужно, как уже упоминалось выше. Но когда я сериализации данных, я получаю следующее:

[{store_name: 'Target'}, {store_name: 'Walmart'}, {store_name: 'Costco'}] 

Не уверен, что я делаю неправильно .. Я включил мой код. (Я не включая операторов импорта)

serializer.py

class StoresSerializer(ModelSerializer): 
    class Meta: 
     model = Stores 
     exclude = ['order_date',] 

views.py

class StoresViewSet(ModelViewSet): 
    queryset = Stores.objects.all().values('store_name').annotate(total=Count('store_name')) 
    serializer_class = StoresSerializer 

Что мне не хватает?

+0

Проверить tha t question http://stackoverflow.com/questions/18434425/how-to-add-annotate-data-in-django-rest-framework-queryset-responses –

ответ

0

Использование one old topic он будет идти следующим образом

models.py (упрощенный вариант, чтобы продемонстрировать идею)

class Store(models.Model): 
    name = models.CharField(max_length=100) 

class Order(models.Model): 
    store_name = models.ForeignKey(Store) 
    order_date = models.DateTimeField(auto_now_add=True) 

serializer.py

from rest_framework.serializers import ModelSerializer 
from rest_framework import serializers 
from .models import Store 

class StoresSerializer(ModelSerializer): 
    orders = serializers.IntegerField() 

    class Meta: 
     model = Store 
     fields = ('name', 'orders') 

views.py

class StoresViewSet(viewsets.ModelViewSet): 
    queryset = Store.objects.all().values('name').annotate(orders=Count('order')) 
    serializer_class = StoresSerializer