1
私はdjango ormモデルで実行しようとしているこのSQLクエリにいくつかの助けが必要です。djangoでgroup byの列の合計
SELECT SUM(CAPITAL) AS PRODUCT_CAPITAL, PRODUCT FROM CAPITAL_SHEET
WHERE CLIENT_ID = 'X1234'
GROUP BY PRODUCT
私はこれは私がJSONで結果として取得していますものです。この
CapitalSheet.objects.filter(client_id="X1234").values("product").annotate(Sum("capital"))
をした:
[
{
"product": "product1"
},
{
"product": "product2"
}
]
私は出力としてこれを期待していた。
[
{
"product": "product1",
"capital": 1234.00
},
{
"product": "product2",
"capital": 1234.00
}
]
ここに私の見解があります:
ここでclass CapitalListView(ListAPIView):
serializer_class = CapitalSheetSerializer
def get_queryset(self):
return CapitalSheet.objects.filter(client_id="X1234").values("product").annotate(Sum("capital"))
私のモデルです:
class CapitalSheet(models.Model):
log_id = models.AutoField(db_column='LOG_ID', primary_key=True)
client_id = models.CharField(db_column='CLIENT_ID', max_length=25)
capital = models.DecimalField(db_column='CAPITAL', max_digits=10, decimal_places=2, blank=True, null=True)
payout_booked_profit = models.DecimalField(db_column='PAYOUT_BOOKED_PROFIT', max_digits=10, decimal_places=2, blank=True, null=True)
voucher_number = models.CharField(db_column='VOUCHER_NUMBER', max_length=45, blank=True, null=True)
ledger_date = models.DateField(db_column='LEDGER_DATE', blank=True, null=True)
amount = models.DecimalField(db_column='AMOUNT', max_digits=10, decimal_places=2, blank=True, null=True)
product = models.CharField(db_column='PRODUCT', max_length=45, blank=True, null=True)
transaction_type = models.CharField(db_column='TRANSACTION_TYPE', max_length=45, blank=True, null=True)
sebi_payin_flag = models.IntegerField(db_column='SEBI_PAYIN_FLAG', blank=True, null=True)
dividend_payout_flag = models.IntegerField(db_column='DIVIDEND_PAYOUT_FLAG', blank=True, null=True)
マイシリアライザ:
class CapitalSheetSerializer(serializers.ModelSerializer):
class Meta:
model = CapitalSheet
fields = ['capital','product']
私はここで間違って何をしているのですか?
どのようにあなたが 'json'を取得したのですか?コードを表示してください –
'CapitalSheetSerializer'のコードを追加してください –
私は質問を更新しました。 – Zed