2017-09-03 6 views
0

シリアライザでは、必須ではないフィールドが設定されています。Django rest framework return必須ではないフィールド

モデルインスタンスをシリアル化すると、このフィールドは出力されません。

これを出力に含めるにはどうすればよいですか?

class Client(models.Model): 
    user = models.OneToOneField(User) 
    profile_photo = models.ImageField(upload_to='pictures/profile_photos') 
    phone = models.CharField(max_length=100, default="") 

class ClientSerializer(serializers.ModelSerializer): 
    username = serializers.CharField(source='user.username') 
    profile_photo = serializers.ImageField(source='details_sample.profile_photo', required=False) 

    class Meta: 
     model = Client 
     fields = ('id', 'username', 'profile_photo', 'phone') 


@api_view(['GET']) 
def get_user_info(request): 

    client = Client.objects.get(user=request.user) 
    serialized = ClientSerializer(client) 

    return Response(serialized.data) # no profile_photo 

私を助けてくれますか?これは動作するはず

+0

を私はジャンゴを知らないが、私は画像のソースが間違っていると思います。 'details_sample.profile_photo'と言うが、Clientインスタンスにdetails_sampleフィールドはありません。 'source = 'profile_photo'を試してください。とにかくそれはちょうど推測です。 – yacc

+0

シリアライザをsource = 'profile_photo'に変更してください。 – user6399774

答えて

0

class Client(models.Model): 
    user = models.OneToOneField(User) 
    profile_photo = models.ImageField(upload_to='pictures/profile_photos', null=True, blank=True) 
    phone = models.CharField(max_length=100, default="") 

class ClientSerializer(serializers.ModelSerializer): 
    username = serializers.CharField(source='user.username') 

    class Meta: 
     model = Client 
     fields = ('id', 'username', 'profile_photo', 'phone') 
関連する問題