首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >字段名` `test`‘对模型“能力”无效

字段名` `test`‘对模型“能力”无效
EN

Stack Overflow用户
提问于 2015-08-21 14:39:17
回答 1查看 2.3K关注 0票数 0

我有一个没有现场“测试”的模型。我在运行时分配这个字段:

代码语言:javascript
运行
复制
ability = Ability.objects.first()
ability.test = 'TEST!!'

我还有一个浆纱机:

代码语言:javascript
运行
复制
class AbilitySerializer(serializers.ModelSerializer):
    class Meta:
        model = Ability
        fields = ('name', 'test',)

当我使用它时:

代码语言:javascript
运行
复制
return Response(AbilitySerializer(ability).data)

我搞错了:

代码语言:javascript
运行
复制
Field Field name `test` is not valid for model `Ability`.

编辑:当我将对象数组传递给序列化程序(使用many=True)时,我仍然面临这个问题。当我通过一个实例时,就可以了。

为什么以及如何修复它?

EN

回答 1

Stack Overflow用户

发布于 2015-08-21 15:16:59

正如Ajay所指出的,必须明确声明非模型字段/方法/属性:

代码语言:javascript
运行
复制
class AbilitySerializer(serializers.ModelSerializer):
    # read_only since test is not a model field
    test = serializers.CharField(read_only=True)

    class Meta:
        model = Ability
        fields = ('name', 'test',)

此外,如果您不总是提供test,请考虑:

代码语言:javascript
运行
复制
test = serializers.CharField(required=False, read_only=True)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32143149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档