Группировка Django выполняется, но имя группы одинаково для каждой группы - PullRequest
1 голос
/ 31 марта 2019

Когда я получаю данные группированием, название группы остается прежним. Когда я извлекаю имя группы из запроса, появляется ошибка: «Невозможно назначить» «Torna 2»: «gercekzamanlıveri.isyeri» должен быть экземпляром «isyerleri». "

seralizer.py

class isyerleriserializer(serializers.ModelSerializer):
    class Meta:
        model = isyerleri
        fields = '__all__'
class malzemelerserializer(serializers.ModelSerializer):
    class Meta:
        model = malzemeler
        fields = '__all__'
class isyerimalzemebilgileriserializer(serializers.ModelSerializer):
    class Meta:
        model = isyerimalzemebilgileri
        fields = '__all__'      
class gercekzamanlıveriserializer(serializers.ModelSerializer):
    class Meta:
        model = gercekzamanlıveri
        fields = '__all__'
class groupdatagercekzamanlıveriserializer(serializers.Serializer)       
    id = serializers.IntegerField()
    isyeri = serializers.SlugRelatedField(
        read_only=False,
        queryset=isyerleri.objects.all(),
        slug_field='isyeri'
    )
    brut_uretim_suresi = serializers.IntegerField()
    net_uretim_miktari = serializers.IntegerField()
    teorik_uretim_miktari = serializers.IntegerField()
    tee = serializers.IntegerField()
    toplam_ciro = serializers.IntegerField()
    toplam_maliyet = serializers.IntegerField()
    vt = serializers.IntegerField()

views.py

class groupdatagercekzamanliveriListView(ListAPIView):
    query2 = gercekzamanlıveri.objects.raw("""SELECT 1 as id,
    SUM(net_uretim_miktari) as net_uretim_miktari,
    SUM(teorik_uretim_miktari) as teorik_uretim_miktari, 
    ROUND((SUM(net_uretim_miktari)/SUM(teorik_uretim_miktari)::float*100)) as tee,
    SUM (toplam_ciro) as toplam_ciro, SUM (toplam_maliyet) as toplam_maliyet,
    ((SUM(toplam_ciro)-SUM(toplam_maliyet))/SUM (toplam_maliyet)::float*ROUND((SUM(net_uretim_miktari)/SUM(teorik_uretim_miktari)::float*100))) as vt 
    FROM (SELECT tee_gercekzamanlıveri.id,tee_isyerleri.isyeri as isyeri,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 """)
    queryset = query2
    serializer_class = groupdatagercekzamanlıveriserializer

Результат запроса "isyeri" одинаков для всех групп

 [
        {
            "id": 1,
            "isyeri": "Torna 1", 
            "brut_uretim_suresi": 445,
            "net_uretim_miktari": 17560,
            "teorik_uretim_miktari": 18691,
            "tee": 94,
            "toplam_ciro": 282100,
            "toplam_maliyet": 225300,
            "vt": 23
        },
        {
            "id": 1,
            "isyeri": "Torna 1", 
            "brut_uretim_suresi": 445,
            "net_uretim_miktari": 20410,
            "teorik_uretim_miktari": 26353,
            "tee": 77,
            "toplam_ciro": 174350,
            "toplam_maliyet": 120420,
            "vt": 34
        }
    ]
...