如果我有两个模型,模型 A 和模型 B,我希望模型 A 的场的平均值是模型 B 中的场的值
if i have two models, model A and model B and i want the average of field of model A to be the value of a field in Model B
我有两个模型:
class Order(models.Model):
truck = models.ForeignKey(Truck, on_delete=models.CASCADE, related_name='relation_truck',default=None)
date= models.DateField()
product=models.CharField(max_length=30)
depot = models.CharField(max_length=10)
volume = models.CharField(max_length=30, blank=True)
volume_delivered = models.CharField(max_length=30, blank=True)
order_status = models.CharField(max_length=50, blank=True)
pub_date = models.DateTimeField(auto_now_add=True, blank=True)
和另一个模型:
class LoadingDashboard(models.Model):
order = models.ForeignKey(Order, on_delete=models.CASCADE, related_name='relation_loading',default=None,blank=True)
product = models.CharField(max_length=3)
loading_average = models.IntegerField(null=True)
expect_quantity = models.IntegerField()
loaded_quantity = models.IntegerField()
remaining_quantity = models.IntegerField(null=True)
total_trucks = models.IntegerField(null=True)
loaded_trucks=models.IntegerField()
remaining_trucks = models.IntegerField(null=True)
我想做一些如下的数学运算:
- Model Loaded里面的产品只有两个:PMS和AGO
- Model Order里的产品也是PMS和Ago
- 型号订单中装载PMS的货车的比容为35000,volume_delivered应该比35000短一点,例如34294
- 装载AGO的卡车的比容是33000,volume_delivered例如可以是32294
- 我希望加载模型中的字段 loading_average 是指定产品的字段 volume_delivered 的平均值,无论是 AGO 还是 PMS,因为它们具有不同的 volume_delivered 值除以 1000
- Model Loaded 中的 expect_quantity 给出的意思是我将决定值
加载模型中的 - loaded_quantity 应该是模型订单中所有 volume_delivered 的总和,而 PMS 和 AGO 又不同 volume_delivered 所以它应该只做 [= 的总和如果产品是 PMS 且与 AGO 相同,则在 PMS 的模型订单中为 49=]
- remaining_quantity 应该是 expect_quantity 和 loaded_quantity
的区别
- total_trucks应该是expect_quantity和loading_average
的除法
- loaded_trucks 应该是模型订单中卡车的总和,同样应该有带有 PMS 的卡车和带有 AGO 的卡车。如果模型中的产品是 PMS,那么装载的卡车应该是模型订单中只有产品 PMS 的卡车的总和减去产品 PMS 的 total_trucks
- remaining_trucks是载货车与total_trucks的区别。
到目前为止我所管理的是:
def loading_dashboard(request):
# import pdb; pdb.set_trace()
loaded = LoadingDashboard.objects.all()
for math in loaded.iterator():
if math.product == 'PMS':
volume = list(Order.objects.filter(product='PMS')
.values_list('volume_delivered', flat=True))
order = volume
sum = 0
for volume in order:
sum = sum + int(volume)
return sum
total = sum
trucks = Order.objects.filter(product='PMS').count()
loading = Order.objects.filter(product='PMS', order_status='Loaded').count()
math.loading_average = total / trucks / 1000
math.total_trucks = math.expect_quantity / math.loading_average
math.loaded_quantity = total / 1000
math.remaining_quantity = math.expect_quantity - math.loaded_quantity
math.loaded_trucks = loading
math.remaining_trucks = math.total_trucks - math.loaded_trucks
return render(request, 'loadings_dashboard.html' , {'loaded': loaded})
我遇到错误
AttributeError: 'int' 对象没有属性 'get' .
我研究了三天解决了:
def loading_dashboard(request):
# import pdb; pdb.set_trace()
loaded = LoadingDashboard.objects.all()
for math in loaded:
volume = list(Order.objects.filter(product='PMS')
.values_list('volume_delivered', flat=True))
order = volume
sum = 0
for volume in order:
sum = sum + int(volume)
trucks = Order.objects.filter(product='PMS').count()
loading = Order.objects.filter(product='PMS', order_status='Loaded').count()
volume_ago = list(Order.objects.filter(product='AGO')
.values_list('volume_delivered', flat=True))
order_ago = volume_ago
sum_ago = 0
for volume in order_ago:
sum_ago = sum_ago + int(volume)
trucks_ago = Order.objects.filter(product='AGO').count()
loading_ago = Order.objects.filter(product='AGO', order_status='Loaded').count()
if math.product == 'PMS':
math.loading_average = sum // trucks // 1000
math.total_trucks = math.expect_quantity // math.loading_average
math.loaded_quantity = sum // 1000
math.remaining_quantity = math.expect_quantity - math.loaded_quantity
math.loaded_trucks = loading
math.remaining_trucks = math.total_trucks - math.loaded_trucks
elif math.product == 'AGO':
math.loading_average = sum_ago // trucks_ago // 1000
math.total_trucks = math.expect_quantity // math.loading_average
math.loaded_quantity = sum_ago // 1000
math.remaining_quantity = math.expect_quantity - math.loaded_quantity
math.loaded_trucks = loading_ago
math.remaining_trucks = math.total_trucks - math.loaded_trucks
return render(request, 'loadings_dashboard.html' , {'loaded': loaded})
我有两个模型:
class Order(models.Model):
truck = models.ForeignKey(Truck, on_delete=models.CASCADE, related_name='relation_truck',default=None)
date= models.DateField()
product=models.CharField(max_length=30)
depot = models.CharField(max_length=10)
volume = models.CharField(max_length=30, blank=True)
volume_delivered = models.CharField(max_length=30, blank=True)
order_status = models.CharField(max_length=50, blank=True)
pub_date = models.DateTimeField(auto_now_add=True, blank=True)
和另一个模型:
class LoadingDashboard(models.Model):
order = models.ForeignKey(Order, on_delete=models.CASCADE, related_name='relation_loading',default=None,blank=True)
product = models.CharField(max_length=3)
loading_average = models.IntegerField(null=True)
expect_quantity = models.IntegerField()
loaded_quantity = models.IntegerField()
remaining_quantity = models.IntegerField(null=True)
total_trucks = models.IntegerField(null=True)
loaded_trucks=models.IntegerField()
remaining_trucks = models.IntegerField(null=True)
我想做一些如下的数学运算:
- Model Loaded里面的产品只有两个:PMS和AGO
- Model Order里的产品也是PMS和Ago
- 型号订单中装载PMS的货车的比容为35000,volume_delivered应该比35000短一点,例如34294
- 装载AGO的卡车的比容是33000,volume_delivered例如可以是32294
- 我希望加载模型中的字段 loading_average 是指定产品的字段 volume_delivered 的平均值,无论是 AGO 还是 PMS,因为它们具有不同的 volume_delivered 值除以 1000
- Model Loaded 中的 expect_quantity 给出的意思是我将决定值 加载模型中的
- loaded_quantity 应该是模型订单中所有 volume_delivered 的总和,而 PMS 和 AGO 又不同 volume_delivered 所以它应该只做 [= 的总和如果产品是 PMS 且与 AGO 相同,则在 PMS 的模型订单中为 49=]
- remaining_quantity 应该是 expect_quantity 和 loaded_quantity 的区别
- total_trucks应该是expect_quantity和loading_average 的除法
- loaded_trucks 应该是模型订单中卡车的总和,同样应该有带有 PMS 的卡车和带有 AGO 的卡车。如果模型中的产品是 PMS,那么装载的卡车应该是模型订单中只有产品 PMS 的卡车的总和减去产品 PMS 的 total_trucks
- remaining_trucks是载货车与total_trucks的区别。
到目前为止我所管理的是:
def loading_dashboard(request):
# import pdb; pdb.set_trace()
loaded = LoadingDashboard.objects.all()
for math in loaded.iterator():
if math.product == 'PMS':
volume = list(Order.objects.filter(product='PMS')
.values_list('volume_delivered', flat=True))
order = volume
sum = 0
for volume in order:
sum = sum + int(volume)
return sum
total = sum
trucks = Order.objects.filter(product='PMS').count()
loading = Order.objects.filter(product='PMS', order_status='Loaded').count()
math.loading_average = total / trucks / 1000
math.total_trucks = math.expect_quantity / math.loading_average
math.loaded_quantity = total / 1000
math.remaining_quantity = math.expect_quantity - math.loaded_quantity
math.loaded_trucks = loading
math.remaining_trucks = math.total_trucks - math.loaded_trucks
return render(request, 'loadings_dashboard.html' , {'loaded': loaded})
我遇到错误 AttributeError: 'int' 对象没有属性 'get' .
我研究了三天解决了:
def loading_dashboard(request):
# import pdb; pdb.set_trace()
loaded = LoadingDashboard.objects.all()
for math in loaded:
volume = list(Order.objects.filter(product='PMS')
.values_list('volume_delivered', flat=True))
order = volume
sum = 0
for volume in order:
sum = sum + int(volume)
trucks = Order.objects.filter(product='PMS').count()
loading = Order.objects.filter(product='PMS', order_status='Loaded').count()
volume_ago = list(Order.objects.filter(product='AGO')
.values_list('volume_delivered', flat=True))
order_ago = volume_ago
sum_ago = 0
for volume in order_ago:
sum_ago = sum_ago + int(volume)
trucks_ago = Order.objects.filter(product='AGO').count()
loading_ago = Order.objects.filter(product='AGO', order_status='Loaded').count()
if math.product == 'PMS':
math.loading_average = sum // trucks // 1000
math.total_trucks = math.expect_quantity // math.loading_average
math.loaded_quantity = sum // 1000
math.remaining_quantity = math.expect_quantity - math.loaded_quantity
math.loaded_trucks = loading
math.remaining_trucks = math.total_trucks - math.loaded_trucks
elif math.product == 'AGO':
math.loading_average = sum_ago // trucks_ago // 1000
math.total_trucks = math.expect_quantity // math.loading_average
math.loaded_quantity = sum_ago // 1000
math.remaining_quantity = math.expect_quantity - math.loaded_quantity
math.loaded_trucks = loading_ago
math.remaining_trucks = math.total_trucks - math.loaded_trucks
return render(request, 'loadings_dashboard.html' , {'loaded': loaded})