Как я могу добавить `order_status_count` на тот же уровень, что и список` results`? [Дубликат]

Все вышеперечисленные решения являются взломанными и багги. Даже не пытайтесь. Используйте другие библиотеки. Лучшее, что я нашел - http://sachinchoolur.github.io/lightslider Отлично работает с загрузкой, не добавляет junk html, высоко настраиваемый, отзывчивый, мобильный и т. Д. ...

$('.multi-item-carousel').lightSlider({
    item: 4,
    pager: false,
    autoWidth: false,
    slideMargin: 0
});

12
задан Tom Manterfield 11 June 2014 в 14:26
поделиться

3 ответа

Поскольку вы, кажется, используете один из ListViews из Rest Framework, вы можете переопределить метод list () в своем классе и установить новые значения в результирующих данных, например:

    def list(self, request, *args, **kwargs):
        response = super(YourClass, self).list(request, args, kwargs)
        # Add data to response.data Example for your object:
        response.data['10_mi_count'] = 10 # Or wherever you get this values from
        response.data['20_mi_count'] = 30
        response.data['30_mi_count'] = 45
        return response

Обратите внимание, что ваш класс должен наследовать ListModelMixin напрямую или через GenericView из API-интерфейсов Rest Framework ( http://www.django-rest-framework.org/api-guide/generic-views#listmodelmixin ). Я действительно не знаю, правильно ли это сделать, но это быстрое решение.

Надеюсь, что это поможет!

19
ответ дан All Іѕ Vаиітy 23 August 2018 в 23:42
поделиться

Используйте SerializerMethodField , как указано в этом решении .

Его можно использовать для добавления любых данных в сериализованное представление ваш объект. ( REST framework doc )

Пример из документации:

from django.contrib.auth.models import User
from django.utils.timezone import now
from rest_framework import serializers

class UserSerializer(serializers.ModelSerializer):
    days_since_joined = serializers.SerializerMethodField()

    class Meta:
        model = User

    def get_days_since_joined(self, obj):
        return (now() - obj.date_joined).days
3
ответ дан suhailvs 23 August 2018 в 23:42
поделиться

В конце я просто создал настраиваемый сериализатор разбиения на страницы с таким полем:

class DistanceCountField(serializers.Field):
    def to_native(self, value):
        try:
            distance_counts = {
                '1_mile': self._count_lte_miles(value, 1),
                '5_mile': self._count_lte_miles(value, 5),
                '10_mile': self._count_lte_miles(value, 10),
                '20_mile': self._count_lte_miles(value, 20),
            }
        except FieldError:
            distance_counts = None

        return distance_counts

    def _count_lte_miles(self, value, miles):
        meters = miles * 1609.344
        return value.filter(distance__lte=meters).count()


class PaginatedCountSerializer(pagination.PaginationSerializer):
    distance_counts = DistanceCountField(source='paginator.object_list')

    class Meta:
        # Class omitted, just a standard model serializer
        object_serializer_class = MyModelSerializer 

Я также добавил аннотацию расстояния к каждому объекту в наборе запросов для работы фильтра.

3
ответ дан Tom Manterfield 23 August 2018 в 23:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: