Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在原始查询Django中向我的计算添加文字百分比符号(%)_Django_Postgresql_Django Rest Framework_Concat - Fatal编程技术网

在原始查询Django中向我的计算添加文字百分比符号(%)

在原始查询Django中向我的计算添加文字百分比符号(%),django,postgresql,django-rest-framework,concat,Django,Postgresql,Django Rest Framework,Concat,在查询中添加百分比符号时出错: 异常类型:索引器 异常值:元组索引超出范围 视图.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, FR

在查询中添加百分比符号时出错:

异常类型:索引器
异常值:元组索引超出范围

视图.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
class groupdatagercekzamanlıveriserializer(serializers.Serializer):

    id = serializers.IntegerField()
    tee = serializers.CharField()
序列化程序.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
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

根据(GIYF对
django sql“%”的首次命中-至少对我来说是这样)您必须将其加倍才能将字符识别为文字,例如:

--
海螺(
圆的(
(总和(净额)/总和(浮点数*100)
),
'%%'
)作为tee,来自tee_gercekzamanlıveri
--

最好不要使用原始SQL,而是使用Django ORM。@Essex它应该不错,但为了让查询更容易理解,我放了一些。我使用原始查询是因为查询非常全面。只要您知道自己在做什么(没有动态值),或者您超出了ORM的能力,原始查询就完全可以了。