0

在 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",)

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

你会怎么做?

4

1 回答 1

0

您可以在序列化程序中定义一个字段,该字段将在现场计算并使用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每次调用序列化程序时都会调用该方法,并将执行您的代码并返回您要提供的字段值。

于 2022-02-22T08:03:23.333 回答