Django报错:Field name `get_thumbnail` is not valid for model `Product` 求助
错误原因
Product模型中定义的缩略图获取方法名为get_thumbnails(复数形式),但ProductSerializer的字段列表中填写的是get_thumbnail(单数形式),二者名称不匹配,Django REST Framework的模型序列化器无法在Product模型上找到对应名称的字段或方法,因此抛出ImproperlyConfigured配置错误。
修复方案
以下两种方案任选其一即可:
- 方案1:修改
models.py中Product类的方法名,和序列化器字段名保持一致
# 将原方法名get_thumbnails改为单数形式 def get_thumbnail(self): if self.thumbnail: return 'http://127.0.0.1:8000' + self.thumbnail.url else: if self.image: self.thumbnail = self.make_thumbnail(self.image) self.save() return 'http://127.0.0.1:8000' + self.thumbnail.url else: return ''
- 方案2:修改
serializers.py中ProductSerializer的字段配置,和模型方法名保持一致
class ProductSerializer(serializers.ModelSerializer): class Meta: model = Product fields = ( "id", "name", "get_absolute_url", "description", "price", "get_image", "get_thumbnails", # 改为复数形式和模型方法名匹配 )
内容的提问来源于stack exchange,提问作者Caleb
相关产品推荐
相关产品推荐

