首页 > 解决方案 > 子模型的序列化

问题描述

我有模型:

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。为什么我无法获得完整的属性蒙版,我该如何解决?非常感谢!

标签: djangodjango-modelsdjango-rest-frameworkdjango-views

解决方案


反向外键关系的默认名称是modelname_setor 在你的情况下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')

推荐阅读