Я хочу добавить ручной ключ в serializer.data в generic.ListAPIView с фильтром и пагинацией

В соответствии с заголовком я хочу вручную добавить ключ "InWishList" в serializer.data, Я делюсь своим текущим ответом, в котором я хочу добавить ключ "InWishlist".

простыми словами я хочу добавить ручной ключ в поля метода сериализатора это зависит от того, что запрос имеет действительный токен или запрошен действительным пользователем. в обоих случаях я хочу добавить ручной ключ внутри поля serializer methed со значением True и False.

    "count": 2071,
    "next": "http://admin.vaniprakashan.in/book_store/book_filters/?page=2",
    "previous": null,
    "results": [
        {
            "id": 10658,
            "hindi_title": null,
            "title": "Ravi Katha : Andaaz-E-Bayan Urf Ravi Katha",
            "unique_code": "498",
            "genres_names": [
                "Memories"
            ],
            "slug": "ravi-katha-andaaz-e-bayan-urf-ravi-katha",
            "variations_dics": {
                "Paperback": true,
                "Hardcover": true
            },
            "printed_book_details": {
                "Hardcover": {
                    "name": "Hardcover",
                    "id": 3607,
                    "isbn_code": "9789389915631",
                    "slug": "ravi-katha-andaaz-e-bayan-urf-ravi-katha-hindi-hindi-hardcover",
                    "original_price": 595.0,
                    "discountable_price": 595.0,
                    "pages": 220,
                    "is_in_stock": true,
                    "languages": "Hindi",
                    "in_print": "Vani Prakashan",
                    "in_print_2": "Vani Prakashan",
                },
                "Paperback": {
                    "name": "Paperback",
                    "id": 3606,
                    "isbn_code": "9789389915648",
                    "slug": "ravi-katha-andaaz-e-bayan-urf-ravi-katha-hindi-hindi-paperback",
                    "original_price": 299.0,
                    "discountable_price": 299.0,
                    "pages": 220,
                    "is_in_stock": true,
                    "languages": "Hindi",
                    "in_print": "Vani Prakashan",
                    "in_print_2": "Vani Prakashan",
                }
            },
            "ebook_details": {},
            "audio_book_details": {},
            "book_reviews": {
                "avg": 0,
                "one_stars": 0,
                "two_stars": 0,
                "three_stars": 0,
                "four_stars": 0,
                "five_stars": 0,
                "total_counts": 0
            },
            "description":"...",
            "images": [
...
            ],
            "authors": [
                ...
            ]
        },....]

в этом ответе мы видим, что есть 3 ключа "printed_book_details" , "audio_book_details" и "ebook_details" эти ключи добавлены в сериализатор с помощью serialzies.MethodField() мой код сериализатора приведен ниже:

мой файл view.py приведен ниже в моем view.py я использую generics.ListAPIView для фильтрации и пагинации мой ответ представления :

class BookFilterListingView(generics.ListAPIView):
    f"""
    {get_variations_list()}

    """
    queryset=BookTable.objects.filter(is_active=True)
    serializer_class=BookListSerializer
    filter_class=BookListFilter
    pagination_class=BookFilterPagination

Я сейчас работаю над книжным интернет-магазином, где пользователь может приобрести 3 формата книги, а именно "printed_book_details", "audio_book_details" и "ebook_details". Все форматы могут иметь несколько вариантов, например "printed_book_details" может иметь "paperback", "hardcover". Вы можете видеть в этом ответе 3 ключа "printed_book_details" , "audio_book_details" и "ebook_details" Эти ключи добавляются в сериализатор с помощью serialzies.MethodField(). и эти ключи также могут быть вложенными, например :

"printed_book_details":{"Hardcover":{},"paperback":{}}

В этой вложенной секции я хочу добавить ручной ключ, который в IsInWishlist зависит от того, добавил пользователь этот вариант в wishlist или нет. Проще говоря, я хочу добавить ручной ключ в поля метода сериализатора, который зависит от того, имеет ли запрос действительный токен или запрошен действительным пользователем. В обоих случаях я хочу добавить ручной ключ внутри поля serializer methed со значением True и False.

Вернуться на верх