python 2.7 - Django-REST-Framework "GroupBy" ModelSerializer -


i have following situation

class mymodel(models.model):     key = models.charfield(max_length=255)     value = models.textfield(max_length=255)     category = models.charfield(max_length=4)     mode = models.charfield(max_length=4) 

the fields key, category , mode unique together. have following objects:

    m1 = mymodel(key='model_key', value='1', category='cat_1' mode='mode_1')     m2 = mymodel(key='model_key', value='2', category='cat_1' mode='mode_2')     m3 = mymodel(key='model_key', value='1', category='cat_2' mode='mode_1')     m4 = mymodel(key='model_key', value='2', category='cat_2' mode='mode_2') 

i want expose api group key , category serialized data this:

{     "key": "model_key",     "category": "cat_1"     "mode_1": { "id": 1, "value": "1" }     "mode_2": { "id": 2, "value": "2" } }, {     "key": "model_key",     "category": "cat_2"     "mode_1": { "id": 3, "value": "1" }     "mode_2": { "id": 4, "value": "2" } } 

is there way of doing in django rest framework modelserializer.

there module allows group django models , still work queryset in result: https://github.com/kako-nawao/django-group-by

using above form queryset:

# postgres specific! django.contrib.postgres.aggregates.general import arrayagg  qs = mymodel.objects.group_by('key', 'category').annotate(         mode_list=arrayagg('mode')).order_by(         'key', 'category').distinct() 

you can access properties key, category , mode_list on resulting queryset items attributes qs[0].mode_list. therefore, in serializer can name them fields.

the model_list field might require serializermethodfield custom code transform list.

note need aggregation if don't want group mode, well.


Comments

Popular posts from this blog

php - How to add and update images or image url in Volusion using Volusion API -

javascript - jQuery UI Splitter/Resizable for unlimited amount of columns -

javascript - IE9 error '$'is not defined -