Как передать необработанный ответ на запрос в класс 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.

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