Rest Framework,如何扁平化简单的多对多关系
Rest Framework, how to flatten simple many to many relationships
我有一个名为 books
的 ManytoManyField()
,它以如下所示的嵌套格式序列化:
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 中,是关系的默认自动生成字段。
我有一个名为 books
的 ManytoManyField()
,它以如下所示的嵌套格式序列化:
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 中,是关系的默认自动生成字段。