Форум сайта python.su
возможно кто-то сталкивался с аналогичным.
есть моделька, по ней делаю сереалайзер, по этому всему делаю вьюху.
можно ли изменить код, чтобы он выдавал список всех 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)
Офлайн
Можно :3
Офлайн