Я хочу добавить ручной ключ в 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.