Python 3.x 如何使用序列化程序生成对象的基本字段的简单列表

Python 3.x 如何使用序列化程序生成对象的基本字段的简单列表,python-3.x,django-rest-framework,django-serializer,Python 3.x,Django Rest Framework,Django Serializer,我正在用Django Rest框架为我的客户机创建Rest API,在创建它的结构时我感到困惑。我想要一个类似于DRF序列化程序的结构: 我的序列化程序如下所示: class GoodBoyToysSerializer(serializers.Serializer): name = serializers.CharField() class GoodBoysSerializer(serializers.ModelSerializer): toys = serializers.

我正在用Django Rest框架为我的客户机创建Rest API,在创建它的结构时我感到困惑。我想要一个类似于DRF序列化程序的结构:

我的序列化程序如下所示:

class GoodBoyToysSerializer(serializers.Serializer):
    name = serializers.CharField()


class GoodBoysSerializer(serializers.ModelSerializer):
    toys = serializers.SerializerMethodField()

    def get_toys(self, good_boy):
        queryset = Toy.objects.filter(good_boy=good_boy)
        serializer = GoodBoyToysSerializer(queryset, many=True)
        return serializer.data
class GoodBoysSerializer(serializers.ModelSerializer):
    toys = serializers.SlugRelatedField(
        read_only=True,
        many=True,
        slug_field='name'
    )

    class Meta:
        model = GoodBoy
        fields = ['id', 'name', 'toys']
它返回:

[
    {
        "id": 1,
        "name": "Alan",
        "toys": [
            { "name": "Robocop" },
            { "name": "Ninja" },
            { "name": "Megalodon" },
        ]
    },
    {
        "id": 2,
        "name": "John",
        "toys": [
            { "name": "Avatar" },
            { "name": "Donatello" },
            { "name": "Super Mario" },
        ]
    },
]
我能做什么?我尝试使用ListSerializer等,但不幸的是,所有这些都是无用的


Python 3,DRF

尝试在序列化程序中返回列表:

类GoodBoysSerializers.ModelSerializer: toys=序列化程序。SerializerMethodField 戴上玩具,好孩子: queryset=玩具。物体。过滤器好孩子=好孩子 返回queryset.values\u list'name',flat=True
有几种解决方案是可能的。其中之一是使用SlugRelatedField

根据文件:

SlugRelatedField可用于使用目标上的字段表示关系的目标

就我而言,它看起来像:

class GoodBoyToysSerializer(serializers.Serializer):
    name = serializers.CharField()


class GoodBoysSerializer(serializers.ModelSerializer):
    toys = serializers.SerializerMethodField()

    def get_toys(self, good_boy):
        queryset = Toy.objects.filter(good_boy=good_boy)
        serializer = GoodBoyToysSerializer(queryset, many=True)
        return serializer.data
class GoodBoysSerializer(serializers.ModelSerializer):
    toys = serializers.SlugRelatedField(
        read_only=True,
        many=True,
        slug_field='name'
    )

    class Meta:
        model = GoodBoy
        fields = ['id', 'name', 'toys']
如果需要slug_字段。它将返回相同的结果

还可以将查询集作为相关字段的参数传递