基于请求的序列化程序字段值



在Haystack中,我有以下视图集:

class ArtistSearchViewSet(HaystackViewSet):
index_models = (Artist,)
serializer_class = ArtistSearchResultSerializer
pagination_class = LimitOffsetPagination

这是序列化程序:

class ArtistSearchResultSerializer(HaystackSerializer):
class Meta:
index_classes = (ArtistIndex,)
fields = (
"id",
"name",
)
search_fields = ("text",)

对于每个返回的搜索结果,我想添加一个布尔字段,指示相应的艺术家是否由当前用户主演。

你会怎么做?

您可以在序列化程序中定义一个字段,该字段将使用SerializerMethodField当场计算并在响应中返回,如下所示:

class ArtistSearchResultSerializer(HaystackSerializer):
starred = serializers.SerializerMethodField(read_only=True)
class Meta:
index_classes = (ArtistIndex,)
fields = (
"id",
"name",
"starred",
)
search_fields = ("text",)
def get_starred(self, obj):
# Your code here
return field_value

每次调用序列化程序时都会调用def get_starred方法,它将执行代码并返回要提供的字段值。

相关内容

最新更新