如何在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
相关产品推荐
相关产品推荐

