#django #python-3.x #django-models #django-rest-framework #django-rest-framework-filters
#django #python-3.x #django-модели #django-rest-framework #django-rest-framework-filters
Вопрос:
Это мои взгляды
class FindKeyWordNews(ListAPIView):
queryset = []
serializer_class = KeyWordSerializers
def get_queryset(self):
query_list = []
keyword = self.kwargs.get("keyword")
if keyword:
republic = Republic.objects.filter(Q(headline__icontains=keyword)).order_by('-id')
ndtv = Ndtv.objects.filter(Q(headline__icontains=keyword)).order_by('-id')
indiatoday = Indiatv.objects.filter(Q(headline__icontains=keyword)).order_by('-id')
hindustan = Hindustan.objects.filter(Q(headline__icontains=keyword)).order_by('-id')
thehindu = Thehindu.objects.filter(Q(headline__icontains=keyword)).order_by('-id')
zee = Zeenews.objects.filter(Q(headline__icontains=keyword)).order_by('-id')
query_list = list(chain(republic, ndtv, indiatoday, hindustan, thehindu, zee))
return query_list
Я знаю, как создать класс сериализатора для одной модели
class NdtvSerializers(serializers.ModelSerializer):
class Meta:
model =Ndtv
fields = ('headline', 'link', 'date', 'category', 'sentiment')
Как я могу создать класс сериализатора для нескольких моделей в соответствии с моими приведенными выше представлениями? Схема модели та же.
Комментарии:
1. Вам просто нужен сериализатор, а не сериализатор модели.
2. @Sayse Проблема решена.
Ответ №1:
После некоторых исследований я нахожу эту документацию rest multiple model и шаги по включению django rest multiple model здесь django rest multiple model в проект После этого все, что мне нужно, чтобы изменить следующий код в моих представлениях и использовать serialize для всех моделей следующим образом:
class FindKeyWordNews(ObjectMultipleModelAPIView):
querylist = []
def get_querylist(self, *args, **kwargs):
keyword = self.kwargs.get("keyword")
print(keyword)
if keyword:
queryset = [
{'queryset': Republic.objects.filter(Q(headline__icontains=keyword)).order_by('-id'),
'serializer_class': RepublicSerializers},
{'queryset': Ndtv.objects.filter(Q(headline__icontains=keyword)).order_by('-id'),
'serializer_class': NdtvSerializers},
{'queryset': Indiatv.objects.filter(Q(headline__icontains=keyword)).order_by('-id'),
'serializer_class': IndiatvSerializers},
{'queryset': Hindustan.objects.filter(Q(headline__icontains=keyword)).order_by('-id'),
'serializer_class': HindustanSerializers},
{'queryset': Thehindu.objects.filter(Q(headline__icontains=keyword)).order_by('-id'),
'serializer_class': TheHinduSerializers},
{'queryset': Zeenews.objects.filter(Q(headline__icontains=keyword)).order_by('-id'),
'serializer_class': ZeeNewsSerializers},
{'queryset': News18.objects.filter(Q(headline__icontains=keyword)).order_by('-id'),
'serializer_class': News18Serializers},
{'queryset': Firstpost.objects.filter(Q(headline__icontains=keyword)).order_by('-id'),
'serializer_class': FirstpostSerializers},
{'queryset': Indianexpress.objects.filter(Q(headline__icontains=keyword)).order_by('-id'),
'serializer_class': IndianexpressSerializers},
{'queryset': Oneindia.objects.filter(Q(headline__icontains=keyword)).order_by('-id'),
'serializer_class': OneindiaSerializers},
]
return queryset
Я рад, что мой код работает нормально, и создаю api.