Django休息框架imagefield可选

时间:2016-06-07 12:19:26

标签: django django-rest-framework

models.py

picture = models.ImageField(upload_to='Images/', 
                            default='/Images/None/No-img.jpg', blank=True,null=True)

serializers.py

class UserProfileSerializer(serializers.ModelSerializer):
    picture = serializers.ImageField(max_length=None, 
                                     allow_empty_file=True, use_url=True)

    class Meta:
        model = UserProfile
        fields = ('id','picture',)     
        read_only_fields=('id')

但它仍然显示为必填字段,我无法使用图片发布请求,这是一个错误吗?

1 个答案:

答案 0 :(得分:5)

也许您应该尝试在序列化程序中将字段picture设置为required=False

由于您已定义image字段而没有任何required参数,因此DRF假设默认required值,即True。如果您在反序列化期间不提供此字段,则DRF将引发需要image字段的错误。

来自docs:

  

如果在此期间未提供字段,通常会引发错误   反序列化。如果不需要此字段,则设置为false   在反序列化期间出现。

     

默认为True

 class UserProfileSerializer(serializers.ModelSerializer):
    picture = serializers.ImageField(required=False, max_length=None, 
                                     allow_empty_file=True, use_url=True)