django - 子模型的序列化
问题描述
我有模型:
class CommonEditor(models.Model):
def __str__(self):
return 'Common Atributes Mask'
class Color(models.Model):
name = models.CharField(max_length=25)
editor = models.ForeignKey(CommonEditor, on_delete=models.PROTECT, null=True)
所以我以这种方式进行序列化:
class ColorSerializer(serializers.ModelSerializer):
class Meta:
model = Color
fields = '__all__'
class CommonAttributesSerializer(serializers.ModelSerializer):
color = ColorSerializer(many=True, read_only=True)
class Meta:
model = CommonEditor
fields = ('pk', 'color')
然后查看:
class CommonAttributeAPIView(generics.ListCreateAPIView):
serializer_class = CommonAttributesSerializer
queryset = CommonEditor.objects.all()
我只得到了我的 CommonEditor 模型的 pk。为什么我无法获得完整的属性蒙版,我该如何解决?非常感谢!
解决方案
反向外键关系的默认名称是modelname_set
or 在你的情况下color_set
。所以尝试将color
字段重命名为color_set
:
class CommonAttributesSerializer(serializers.ModelSerializer):
color_set = ColorSerializer(many=True, read_only=True)
class Meta:
model = CommonEditor
fields = ('pk', 'color_set')
推荐阅读
- typescript - 参数 'saga' 和 'saga' 的类型不兼容
- arrays - 即使捕获错误 ArrayIndexOutOfBounds 如何继续循环?
- mongodb - mongodb MongoTemplate withWriteConcern 怎么样?
- webpack - 集成 bazel 和 webpack
- laravel - HTTP/2 服务器推送的资产加载失败 (HTTP2_CLIENT_REFUSED_STREAM)
- ios - 相机预览上的 SwiftUI 位置叠加
- javascript - 在 resolve() 期间更改 React 材料表中的状态变量
- excel - 如何在 Excel 中创建基于数字和字符的转换掩码
- php - 没有错误,但 fwrite() 不会写入文件
- ios - 没有 Storyboard 的 iOS 13 项目显示很有趣