【问题标题】:The 'image' attribute has no file associated with it. Django serilizer\'image\' 属性没有与之关联的文件。 Django 序列化程序
【发布时间】:2023-01-16 17:06:57
【问题描述】:

这是我的代码

class Brand(models.Model):
    name =  models.CharField(max_length=255)
    logo = models.ImageField(upload_to=generate_filename_brand_image)  #over write
    add_to_explore = models.BooleanField(default=False)
    def __str__(self):
        return self.name

class Item(models.Model): 
    brand = models.ForeignKey('core.Brand', on_delete=models.CASCADE, null=True ,blank=True)


class ItemSerializers(serializers.ModelSerializer):
     brand_logo = serializers.CharField(source='brand.logo.url')

class Meta:
    model = Item
    fields = ['id','brand_logo']

如果图像无我得到这个错误 'image' 属性没有与之关联的文件。

如何处理这个错误

【问题讨论】:

    标签: django django-rest-framework


    【解决方案1】:

    您可以使用SerializerMethodField 来检查图像字段是否有文件。例如;

    from rest_framework import serializers
    
    
    class ItemSerializers(serializers.ModelSerializer):
        brand_logo = serializers.SerializerMethodField()
    
        class Meta:
            model = Item
            fields = ['id', 'brand_logo']
    
        def get_brand_logo(self, obj):
            return obj.brand.logo and obj.brand.logo.url or None
    

    如果品牌有徽标,则只需返回它的 url,否则返回 None

    【讨论】:

      猜你喜欢
      • 2016-02-06
      • 2022-12-11
      • 2023-02-21
      • 2020-01-16
      • 1970-01-01
      • 1970-01-01
      • 2018-04-28
      • 2015-12-30
      • 1970-01-01
      相关资源
      最近更新 更多