2014-12-18 10 views
0

Я конечная точка, которая дает ответ, как это:Джанго формат отображения restframework

{ 
    "theatershowtime" : [ 
     { 
      "movietime" : "2014-11-23T02:40:00Z", 
      "mvtype" : "3D" 
     }, 
     { 
      "movietime" : "2014-11-23T05:40:00Z", 
      "mvtype" : "3D" 
     }, 
     { 
      "movietime" : "2014-11-23T03:40:00Z", 
      "mvtype" : "IMAX" 
     }, 
    ] 

} 

Это мой serializes.py:

class TheaterSerializer(serializers.ModelSerializer): 
    theatershowtime = MovieShowtimeSerializer(many=True, read_only=True, source='theater') 

    class Meta: 
     model = MovieTheater 
     fields = ('theatershowtime', ) 


class MovieShowtimeSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = MovieShowtime 
     fields = ('movietime', 'mvtype', ) 

я узнать способ, как показать, как это:

"Times": [ 
     "2014-11-23T02:40:00Z", 
     "2014-11-23T05:40:00Z", 
     "2014-11-23T03:40:00Z", 
] 

это использовать этот serializes.py:

class TheaterSerializer(serializers.ModelSerializer): 
    Times = serializers.SerializerMethodField('get_movietimes') 
    def get_movietimes(self, obj): 
     movietimes = [] 
     for i in obj.theater.all(): 
      movietimes.append(i.movietime) 
     return movietimes 


    class Meta: 
     model = MovieTheater 
     fields = ('Times', ) 

Но я хочу ответ, как это:

theatershowtime: { 
      Times: { 
       3D: [ 
        "2014-11-23T02:40:00Z", 
        "2014-11-23T05:40:00Z", 
       ], 
       IMAX: [ 
        "2014-11-23T03:40:00Z", 
       ] 
      } 
}, 

Пожалуйста, помогите мне! Большое спасибо!!!

ответ

0

Попробуйте использовать этот фрагмент кода:

... 
def get_movietimes(self, obj): 
    movietimes = {} 
    for i in obj.theater.all(): 
     if i.mvtype not in movietimes: 
      movietimes[i.mvtype] = [] 
     movietimes[i.mvtype].append(i.movietime) 
    return movietimes 
... 
+0

спасибо, я много узнал из вашего кода! – user2492364