Добавить буквенный знак процента (%) к моему расчету внутри необработанного запроса Django - PullRequest
1 голос
/ 03 апреля 2019

Я получаю сообщение об ошибке, когда добавляю символ процента в запросе:

Тип исключения: IndexError
Значение исключения: индекс кортежа вне диапазона.

views.py

class groupdatagercekzamanliveriListView(ListAPIView):
query2 = gercekzamanlıveri.objects.raw("""SELECT 1 as id,
CONCAT(ROUND((SUM(net_uretim_miktari)/SUM(teorik_uretim_miktari)::float*100)),'%') as tee, FROM tee_gercekzamanlıveri
INNER JOIN tee_isyerleri ON tee_gercekzamanlıveri.isyeri_id= tee_isyerleri.id
INNER JOIN tee_malzemeler ON tee_gercekzamanlıveri.malzeme_id= tee_malzemeler.id
INNER JOIN tee_isyerimalzemebilgileri ON tee_isyerimalzemebilgileri.isyeri_id= tee_gercekzamanlıveri.isyeri_id 
AND tee_isyerimalzemebilgileri .malzeme_id = tee_gercekzamanlıveri.malzeme_id) as a GROUP BY isyeri_id""")

    queryset = query2
    serializer_class = groupdatagercekzamanlıveriserializer

serializer.py

class groupdatagercekzamanlıveriserializer(serializers.Serializer):

    id = serializers.IntegerField()
    tee = serializers.CharField()

Когда я использую "a" в качестве строки для "%" нетпроблема:

CONCAT(ROUND((SUM(net_uretim_miktari)/SUM(teorik_uretim_miktari)::float*100)),'a') as tee

Результат: "tee": 80a

1 Ответ

1 голос
/ 03 апреля 2019

Согласно документации (первый удар GIYF для django sql "%" - по крайней мере, для меня), вам нужно удвоить его, чтобы персонаж был признан литералом, например ::1004*

--
CONCAT(
  ROUND(
    (SUM(net_uretim_miktari) / SUM(teorik_uretim_miktari)::float * 100)
  ),
  '%%'
) as tee, FROM tee_gercekzamanlıveri
--
...