2017-05-16 16 views
1

にシリアライズする方法:私は次のようにジャンゴにシリアライザを持っているジャンゴ

[ 
    { 
     "url": "http://127.0.0.1:8000/sales/api/v1/lists/3741/", 
     "name": "DEA 2017", 
     "start": "2017-03-09T10:00:00", 
     "stop": "2017-12-31T12:00:00", 
     "state": "OPEN", 
     "vehicles": [ 
      "http://127.0.0.1:8000/sales/api/v1/assets/134299/", 
      "http://127.0.0.1:8000/sales/api/v1/assets/154368/", 
      "http://127.0.0.1:8000/sales/api/v1/assets/154367/", 
      "http://127.0.0.1:8000/sales/api/v1/assets/154246/", 
      "http://127.0.0.1:8000/sales/api/v1/assets/155906/", 
      "http://127.0.0.1:8000/sales/api/v1/assets/155212/", 
      "http://127.0.0.1:8000/sales/api/v1/assets/154574/", 
      "http://127.0.0.1:8000/sales/api/v1/assets/155683/", 
      "http://127.0.0.1:8000/sales/api/v1/assets/153347/", 
      "http://127.0.0.1:8000/sales/api/v1/assets/153183/", 
      "http://127.0.0.1:8000/sales/api/v1/assets/153182/", 
      "http://127.0.0.1:8000/sales/api/v1/assets/153152/", 
      "http://127.0.0.1:8000/sales/api/v1/assets/153116/", 
      "http://127.0.0.1:8000/sales/api/v1/assets/154913/", 
      "http://127.0.0.1:8000/sales/api/v1/assets/152389/", 
      "http://127.0.0.1:8000/sales/api/v1/assets/153459/", 
      "http://127.0.0.1:8000/sales/api/v1/assets/153568/", 
      "http://127.0.0.1:8000/sales/api/v1/assets/153659/" 
     ] 
    } 
] 

私はvehicles私にそれらのURLののいずれかをクリックした場合:私は、次のようになってしまう

class ListSerializer(serializers.HyperlinkedModelSerializer): 
    vehicles = serializers.HyperlinkedRelatedField(
     view_name='asset-detail', 
     many=True, 
     read_only=True 
    ) 

    class Meta: 
     model = List 
     fields = ('url', 'name', 'start', 'stop', 'state', 'vehicles') 

結果次のようにオブジェクトを取得します。

{ 
    "vin": "WVWZZZ6RZEY104640", 
    "make": "VOLKSWAGEN", 
    "model": "POLO", 
    "fuel": "Diesel" 
} 

私が望むのは、URLの代わりにオブジェクトで結果を得ることです。

はこのようなものは、次のように:

[ 
     { 
      "url": "http://127.0.0.1:8000/sales/api/v1/lists/3741/", 
      "name": "DEA 2017", 
      "start": "2017-03-09T10:00:00", 
      "stop": "2017-12-31T12:00:00", 
      "state": "OPEN", 
      "vehicles": [ 
       { 
        "vin": "WVWZZZ6RZEY104123", 
        "make": "VOLKSWAGEN", 
        "model": "POLO", 
        "fuel": "Diesel" 
       }, 
       { 
        "vin": "WVWZZZ6RZEY10452", 
        "make": "VOLKSWAGEN", 
        "model": "Golf", 
        "fuel": "Diesel" 
       }, 
       {...}, 
       {...}, 
       {...}, 
       .... 
      ] 
     } 
    ] 

任意のアドバイスはありますか?

P.S.私は合計初心者だとあなたは私はあなたが車の属性を表すためにVehicleモデルを持っていると信じてthere

答えて

3

を持っていてください。 はその後、車両のためのシリアライザを作成し、あなたのためにそれを使用するリストシリアライザを以下のようにすることができます

class VehicleSerializer(serializers.ModelSerializer): 
    """Serializer for vehicle""" 

     class Meta: 
     model = Vehicle 



class ListSerializer(serializers.HyperlinkedModelSerializer): 
    vehicles = VehicleSerializer(many=true) 

    class Meta: 
     model = List 
     fields = ('url', 'name', 'start', 'stop', 'state', 'vehicles') 
+0

をおそらく私たちはモデルを持っていないので、より多くのものは単なる当て推量になります。 – Linovia

3

を説明されているネストされたシリアライザを探している慈悲:)

関連する問題