Rest Framework,如何扁平化简单的多对多关系

Rest Framework, how to flatten simple many to many relationships

我有一个名为 booksManytoManyField(),它以如下所示的嵌套格式序列化:

books = BooksSerializer(read_only=True, many=True)

"books": [
{
    "id": 12
},
{
    "id": 13
},

因为我只序列化 1 个字段并且该字段是唯一的。如何展平字段以输出简单列表?

"books": [12, 13]

您可以使用 SerializerMethodField 并在那里提供自定义序列化逻辑:

class LibrarySerializer(model.ModelSerializer):
    books = serializers.SerializerMethodField()

    def get_books(self, library):
        return [book.id for book in library.books]

您似乎在寻找只读 PrimaryKeyRelatedField,它包含在 DRF 中,是关系的默认自动生成字段。