我有两种情况:
情况1:
BleManager.enableBluetooth()
.then(() => {
// Success code
console.log('The bluetooth is already enabled or the user confirm');
this.setState({ isBluetooth: true })
this.startConnect();
})
.catch((error) => {
//Failure code
Alert.alert('', 'Please turn on your bluetooth',
[
{ text: 'Cancel', onPress: () => console.log('Cancel Pressed'), style: 'cancel' },
{
text: 'Settings', onPress: () => {
AndroidOpenSettings.bluetoothSettings()
}
},
])
return;
});
情况2:
qs = Stockdata.objects.annotate(sales_sum=Coalesce(Sum('salestock__quantity')))
qs2 = Stockdata.objects.annotate(purchase_sum=Coalesce(Sum('purchasestock__quantity_p')))
案例1的结果是绝对完美的,但是当我尝试案例2时,结果将乘以我输入的项目数。
任何人都可以告诉我这是什么原因,并且可以提供纠正错误的完美解决方案,因为第二种情况是我需要在项目中使用的...
谢谢
修改
我已经根据回复尝试过此操作:
qs = Stockdata.objects.annotate(
sales_sum = Coalesce(Sum('salestock__quantity'),0),
purchase_sum = Coalesce(Sum('purchasestock__quantity_p'),0))
但是在进一步减去带注释的值时使用“ the_sum”存在一些问题。
我以前曾经这样做过:
qs = Stockdata.objects.annotate(
sales_sum = Subquery(
Stock_total_sales.objects.filter(
sales = OuterRef('pk')
).values(
'sales'
).annotate(
the_sum = Sum('quantity')
).values('the_sum')
),
purchase_sum = Coalesce(Sum('purchasestock__quantity_p'),0)
任何建议,而不是sales_sum,我都应该使用。
谢谢