Как передать необработанный ответ на запрос в класс Serializer?
Я пытаюсь получить данные с помощью необработанного sql-запроса, но сталкиваюсь с проблемами, когда пытаюсь передать необработанный sql-ответ классу Serializer.
Serializer
class User_Serializer(serializers.ModelSerializer):
class Meta:
model = Users
fields = '__all__'
View
class UserView(APIView):
def get(self, request, emailId, format=None):
with connection.cursor() as cursor:
cursor.execute("SELECT * FROM users")
resRow = cursor.fetchone()
serializerResponse = User_Serializer(resRow)
return Response(serializerResponse.data)
Я понимаю, что класс Serializer не может работать с классом ModelSerialzier в этой ситуации. Как я должен построить свой Serializer, учитывая тот факт, что мне нужно размещать и сохранять данные в соответствующей модели, используя этот класс Serializer.
Вместо того чтобы создавать соединение вручную, используйте метод raw
вашего менеджера моделей. Он вернет экземпляр RawQuerySet
и будет итерируемым, как и обычный QuerySet
. Также все записи, которые были извлечены из базы данных, будут экземпляром модели. Вы можете использовать его следующим образом:
users = User.objects.raw("SELECT * FROM users_user")
serializer = UserSerializer(users, many=True)
serializer.data
Не забудьте ознакомиться с документацией raw sql.