【问题标题】:Django rest framework imagefield optionalDjango rest 框架 imagefield 可选
【发布时间】:2016-06-07 12:19:26
【问题描述】:

models.py

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

序列化器.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')

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

【问题讨论】:

  • 您是否已经尝试过:url = forms.URLField(label='Your website', required=False) aka required=False
  • 您可能没有使用表单,所以可能在 models.py 中:null=True?
  • 我确实试过 null=True ,它没有任何区别
  • @Zargold 我认为这是错误!

标签: django django-rest-framework


【解决方案1】:

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

由于您定义了没有任何 required 参数的 image 字段,因此 DRF 假定默认值 requiredTrue。如果在反序列化过程中不提供该字段,DRF 会报错image 字段是必需的。

来自docs:

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

默认为True

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

【讨论】:

  • 我已经将我的 restframework 更新到 3.3 问题已解决,谢谢您的帮助
  • extra_kwargs = {'picture': {'required': False}}也可以这样
猜你喜欢
  • 2013-12-16
  • 2016-08-10
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 2014-07-27
  • 1970-01-01
  • 1970-01-01
  • 2019-01-30
相关资源
最近更新 更多