2015-11-26 6 views
0

Привет Я пытаюсь получить маркер из формата JSON купить, когда я делаю .get («gtoken») они возвращают NULL, и я не знаю, почемуdevice_data.get() всегда возвращает Null

Вот мой Код от 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 пользователя с Null = True, поэтому не послал и ошибок.

ответ

1

Вы хотите, чтобы DeviceSerializer был ModelSerializer, так как он имеет Meta с model.

В настоящий момент это обычный Serializer без определенного поля. Поэтому он не возвращает никаких данных.

+0

Человек, которого вы Удивительный, я не видел этого jaja: D Спасибо jajjaa –