Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 22, 2014 10:47:46

chaotism
От:
Зарегистрирован: 2010-11-29
Сообщения: 76
Репутация: +  1  -
Профиль   Отправить e-mail  

rest framework serializer

возможно кто-то сталкивался с аналогичным.
есть моделька, по ней делаю сереалайзер, по этому всему делаю вьюху.
можно ли изменить код, чтобы он выдавал список всех CacheCoverage по id линейно,
а список level с вложенностью в них region, id и тд


class CacheCoverage(models.Model):
    """
    Покрытие кэша.
    """
    level = models.PositiveSmallIntegerField(db_column='level', verbose_name='масштабный уровень',
                                             choices=((x, str(x)) for x in xrange(0, 20)))
    cache = models.ForeignKey(Cache, db_column='cache_id', verbose_name='кэш')
    region = models.PolygonField(null=True, blank=True, srid=4326, db_column='extent', verbose_name='район')
    task = models.ForeignKey(Task, verbose_name='задача', blank=True, null=True)
class CacheCoverageSerializer(serializers.ModelSerializer):
    wms_url = serializers.SerializerMethodField('get_wms_url')
    status = serializers.CharField(source='task.get_status', read_only=True)
    region_name = serializers.SerializerMethodField('get_region_name')
    class Meta:
        model = CacheCoverage
       # fields = ['id','level', 'wms_url','processing', 'items', 'task']
        fields = ['id','level','region_name', 'region', 'wms_url', 'status']
      #  return query.filter(cache=self.get_base_layer().cache).order_by('level')
    def get_level_items(self, obj):
        return CacheCoverage.objects.all().distinct().values('level').order_by('level')
        pass
    def get_region_name(self, obj):
        return 'Район №%s'%obj.pk
    def get_wms_url(self, obj):
        site = Site.objects.get(pk=settings.SITE_ID)
        return 'http://%s%s' % (site, reverse('protocol:sources:wms', kwargs={'source_pk': obj.pk}))
class CacheCoveragePaginatedAPIView(generics.ListAPIView):
    model = CacheCoverage
    serializer_class = CacheCoverageSerializer
    paginate_by = 10
    paginate_by_param = 'page_size'
    max_paginate_by = 100
сейчас оно так:
    "results": [
        {
            "id": 1, 
            "level": 0, 
            "region_name": "\u0420\u0430\u0439\u043e\u043d \u21161", 
            "region": "POLYGON ((-12.3237311840060002 10.8105468750000000, -13.1147468090060002 -11.2500000000000000, 21.3383781909939998 -13.3593750000000000, 21.0747063159939998 11.7773437500000000, -12.3237311840060002 10.8105468750000000))", 
            "wms_url": "http://localhost:8004/sources/1/wms/", 
            "status": null
        },
        {
            "id": 2, 
            "level": 1, 
            "region_name": "\u0420\u0430\u0439\u043e", 
            "region": "POLYGON ((-12.3237311840060002 10.8105468750000000, -13.1147468090060002 -11.2500000000000000, 21.3383781909939998 -13.3593750000000000, 21.0747063159939998 11.7773437500000000, -12.3237311840060002 10.8105468750000000))", 
            "wms_url": "http://localhost:8004/sources/2/wms/", 
            "status": null
        },]
а хочеться:
    "results": [
        {
            "level": 1, 
            "level_items"[:
            {"id:1",
            "region_name": "\u0420\u0430\u0439\u043e\u043d \u21161", 
            "region": "POLYGON ((-12.3237311840060002 10.8105468750000000, -13.1147468090060002 -11.2500000000000000, 21.3383781909939998 -13.3593750000000000, 21.0747063159939998 11.7773437500000000, -12.3237311840060002 10.8105468750000000))", 
            "wms_url": "http://localhost:8004/sources/1/wms/", 
            "status": null},
            {"id:2",
            "region_name": "\u0420\u0430\u0439\u043e\u043d", 
            "region": "POLYGON ((-12.3237311840060002 10.8105468750000000, -13.1147468090060002 -11.2500000000000000, 21.3383781909939998 -13.3593750000000000, 21.0747063159939998 11.7773437500000000, -12.3237311840060002 10.8105468750000000))", 
            "wms_url": "http://localhost:8004/sources/2/wms/", 
            "status": null}
]
        },



Отредактировано chaotism (Апрель 22, 2014 10:48:48)

Офлайн

#2 Июнь 18, 2014 00:46:38

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

rest framework serializer

Можно :3

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version