如何用空字符串替换空框架?

2024-05-17 06:23:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个ImageField类型的模型:

class Attendance(models.Model):
    face_image = models.ImageField(, blank=True, null=True, storage=MediaStorage())

基于模型的序列化程序

^{pr2}$

但是,如果imagefield为空,则显示如下

Its now showing like this in the json

  {
    "id": 1,
    "face_image": null
  }

如果face_image(ImageField)的输出为空,则它将显示为空。我希望将null替换为如下空字符串“”


Tags: 模型imagetrue类型model序列化modelsstorage
3条回答

您可以使用SerializerMethodField。在

class AttendanceSerializer(serializers.ModelSerializer):

    face_image = serializers.SerializerMethodField()

    class Meta: 
        model = Attendance
        fields = ('id', 'face_image')

    def get_face_image(self, instance):
        return (instance.face_image.url if instance.face_image else '')

重写AttendanceSerializer的方法,

class AttendanceSerializer(serializers.ModelSerializer):
    class Meta:
        model = Attendance
        fields = ('id', 'face_image')

    def to_representation(self, instance):
        data = super().to_representation(instance)
        if not data['face_image']:
            data['face_image'] = ""
        return data

更新(11/03/2019)

I have lots of fields and its not really good idea that I repeat this code for all of them, isn't there a better way to do it for all fields?

^{2}$

序列化程序元中提到的所有字段的迭代代码:

def to_representation(self, instance):
    data = super().to_representation(instance)
    for key, value in data.items():
        try:
            if not value:
                data[key] = ""
        except KeyError:
            pass
    return data

相关问题 更多 >