2017-09-03 75 views
0

在我的序列化程序中,我将字段设置为非必需。Django rest框架返回非必需字段

当我串行化模型实例时,该字段不在输出中。

如何在输出中包含此字段?

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

我不知道Django的,但我认为图像的来源是错误的。您说'details_sample.profile_photo',但客户端实例中没有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') 
相关问题