You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django DRF获取博客列表时Field name字段无效错误求助

报错原因

你收到的Field name 'field_name' is not valid for model Model报错中,field_name实际对应tags,Model对应Post,核心问题是:

  • 你在Tag模型的多对多字段posts上设置的反向关联名为tags_posts,也就是说Post实例要获取关联的所有标签,需要调用post.tags_posts,但你在PostSerializer的Meta.fields里直接写了不存在的字段名tags,序列化器找不到Post模型上的对应字段,就抛出了该错误。

解决方案

你可以根据需求任选一种方案修复:

方案1:修改序列化器,适配现有反向关联名

如果不想改动模型代码,可以直接调整序列化器配置:

  • 要么直接把fields里的tags替换成实际的反向关联名tags_posts:
class PostSerializer(serializers.ModelSerializer):
    """Post Serializer"""
    owner = serializers.ReadOnlyField(source='owner.username')
    comments = serializers.PrimaryKeyRelatedField(many=True, read_only=True)

    class Meta:
        model = Post
        fields = ('id', 'title', 'body', 'owner', 'comments', 'tags_posts', )
  • 要么显式声明tags字段指定关联源,保持接口返回字段名不变:
class PostSerializer(serializers.ModelSerializer):
    """Post Serializer"""
    owner = serializers.ReadOnlyField(source='owner.username')
    comments = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
    tags = serializers.PrimaryKeyRelatedField(many=True, read_only=True, source='tags_posts')

    class Meta:
        model = Post
        fields = ('id', 'title', 'body', 'owner', 'comments', 'tags', )

方案2:修改模型反向关联名,适配序列化器配置

如果不想改动序列化器代码,直接调整Tag模型的多对多字段配置即可:

class Tag(models.Model):
    """Tags model."""
    name = models.CharField(max_length=100, blank=False, default='')
    owner = models.ForeignKey(User, related_name='tags_owner',
                              on_delete=models.CASCADE)
    # 将related_name从tags_posts修改为tags
    posts = models.ManyToManyField('Post', related_name='tags',
                                   blank=True)

修改完成后执行以下命令生效模型变更:

python manage.py makemigrations
python manage.py migrate

额外提示:如果修改后仍然报同类错误,逐一检查序列化器fields列表里的所有字段,确认每个字段要么是Post模型自身声明的字段,要么是关联模型设置的反向关联名,不存在拼写错误、名称不匹配的情况,比如示例代码中的comments字段,也需要确认Comment模型里关联Post的外键的related_name是否为comments。

内容的提问来源于stack exchange,提问作者Lutaaya Huzaifah Idris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 16:36:03