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

如何在Django Rest Framework中使用嵌套序列化器?我的实现无法正常工作

问题解决方法

你的序列化器无法正常展示用户关联产品的问题,核心出在source参数的写法上:

错误原因

在UserSerializer中,related_products的source写了"user.product_set.all",但当前序列化的对象本身就是User实例(request.user),不需要再通过user.来引用,直接写"product_set.all"即可。

修正后的代码

serializer.py

class UserSerializer(serializers.ModelSerializer):
    related_products = ProductSerializer(
        source="product_set.all", read_only=True, many=True
    )

    class Meta:
        model = User
        fields = [
            "first_name",
            "last_name",
            "bio",
            "phone",
            "agency",
            "related_products",
        ]

额外优化建议

如果你的Product模型中外键关联User时设置了related_name,比如:

# Product模型示例
class Product(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="products")
    # 其他字段...

那可以把source改成"products",代码会更清晰:

related_products = ProductSerializer(
    source="products", read_only=True, many=True
)

内容的提问来源于stack exchange,提问作者Mohsin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 12:27:35