2017-09-03 2 views
0

Dans mon sérialiseur, j'ai un champ qui n'est pas requis.Le cadre de repos Django renvoie le champ non obligatoire

Lorsque je sérialise une instance de modèle, ce champ n'est pas dans la sortie.

Comment puis-je l'inclure dans la sortie?

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 

Pouvez-vous m'aider?

+0

Je ne sais pas Django, mais je pense que la source de l'image est fausse. Vous dites 'details_sample.profile_photo' mais il n'y a pas de champ details_sample dans l'instance Client. Essayez 'source = 'profile_photo''. C'est juste une supposition de toute façon. – yacc

+0

Changez votre serializer en source = 'profile_photo' et il devrait fonctionner. – user6399774

Répondre

0

Cela devrait fonctionner:

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')