当我要查询和过滤时:
'RawQuerySet'对象没有属性'all'
views.py
class groupdatagercekzamanliveriListView(ListAPIView):
query2 = gercekzamanlıveri.objects.raw("""SELECT isyeri_id as id,isyeri_id,
CONCAT((ROUND(SUM(net_uretim_miktari)/SUM(teorik_uretim_miktari)::float*100)),'%%') as gtee
FROM (SELECT tee_gercekzamanlıveri.id,tee_gercekzamanlıveri.isyeri_id,tee_malzemeler.malzeme as malzeme,tee_gercekzamanlıveri.tarih,tee_gercekzamanlıveri.brut_uretim_suresi,tee_gercekzamanlıveri.net_uretim_miktari,tee_isyerimalzemebilgileri.net_islem_zamani,tee_isyerimalzemebilgileri.satis_fiyati,tee_isyerimalzemebilgileri.uretim_maliyeti,
(tee_gercekzamanlıveri.brut_uretim_suresi*60/tee_isyerimalzemebilgileri.net_islem_zamani) as teorik_uretim_miktari,
ROUND((tee_gercekzamanlıveri.net_uretim_miktari/(tee_gercekzamanlıveri.brut_uretim_suresi*60/tee_isyerimalzemebilgileri.net_islem_zamani)::float)*100::float) as tee,
(tee_isyerimalzemebilgileri.satis_fiyati*tee_gercekzamanlıveri.net_uretim_miktari) as toplam_ciro,
(tee_isyerimalzemebilgileri.uretim_maliyeti*tee_gercekzamanlıveri.net_uretim_miktari) as toplam_maliyet,
ROUND((ROUND((tee_gercekzamanlıveri.net_uretim_miktari/(tee_gercekzamanlıveri.brut_uretim_suresi*60/tee_isyerimalzemebilgileri.net_islem_zamani)::float)*100::float))*(((tee_isyerimalzemebilgileri.satis_fiyati*tee_gercekzamanlıveri.net_uretim_miktari)-(tee_isyerimalzemebilgileri.uretim_maliyeti*tee_gercekzamanlıveri.net_uretim_miktari))/(tee_isyerimalzemebilgileri.uretim_maliyeti*tee_gercekzamanlıveri.net_uretim_miktari)::float)) as vt 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""")
serializer_class = groupdatagercekzamanlıveriserializer
queryset = query2
filter_backends = (DjangoFilterBackend,)
filter_fields = ('id',)
serializer.py
class groupdatagercekzamanlıveriserializer(serializers.Serializer):
id = serializers.IntegerField()
gtee = serializers.CharField()
当运行查询结果数据为:
{
"id": 1,
"gtee": "77%"
}
{
"id": 2,
"gtee": "94%"
}
答案 0 :(得分:0)
由于get_queryset
方法调用self.queryset.all()
,但是raw
查询未提供Queryset
Object
,因此在获取.all()
时会出错方法。
因此重写get_queryset()方法并返回原始查询
class groupdatagercekzamanliveriListView(ListAPIView):
def get_queryset(self)
return gercekzamanlıveri.objects.raw('...')