2015-11-26 206 views
0

嗨,我試圖讓從JSON格式的令牌買的時候讓我獲得(「gtoken」),他們返回NULL,我不知道爲什麼device_data.get()總是返回空

這裏是我的從Serializers.py

class DeviceSerializer(serializers.Serializer): 
    class Meta: 
     model = Device 
     fields = (
      'gtoken' 
      ) 

class AddDeviceSerializer(serializers.Serializer): 
    username = serializers.CharField() 
    device = DeviceSerializer() 
    class Meta(): 
     fields = (
      'username' 
      'device' 
      ) 

    def create(self, validated_data): 
     """ 
     Add Device to an user 
     """ 
     device_data = validated_data.pop('device') 
     user = User.objects.get(username=validated_data['username']) 
     gtoken = device_data.get('gtoken') 
     device = Device.objects.create(gtoken = gtoken) 
     device.user.add(user) 
     return device 

代碼,這是我要送

{ 
    "username": "735062", 
    "device": { 
     "gtoken": "cJHdNYxqIr4:APA91bFqFmFLoyf6t36iXAE9aoiSnG_nv8u5f6SfLVLrCtRYslAz04IZXfweLYg2RKRcQdJ6Vu0e9mLDFb2QB2k63oMnerKxSCfxO4PHmXrEQv_Pk-iWVlCsfoLYygat6OyPuiF79Gl1" 
    } 
} 

的觀點僅保存設備以及它的工作,因爲在數據庫中,但沒有令牌divice商店。

class UserDeviceToken(APIView): 
    authentication_classes = (TokenAuthentication,)  
    permission_classes = (IsAuthenticated,) 

    def put(self, request): 
     serializer = AddDeviceSerializer(data = request.data) 
     serializer.is_valid(raise_exception=True) 
     serializer.save() 
     return Response(status=status.HTTP_201_CREATED) 

注意該設備是誰擁有空=真這就是爲什麼不發錯用戶ManytoManyField關係的典範。

回答

1

您希望DeviceSerializerModelSerializer,因爲它的Metamodel定義。

目前,這是一個沒有任何定義字段的常規Serializer。因此它不返回任何數據。

+0

你真棒的人我沒有看到jaja:D謝謝jajjaa –