У меня есть две модели:
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)
Я хочу сделать некоторые математические операции, которые следующие:
- Продукт в загруженной модели только два: PMS и AGO
- продукт в модельном заказе также PMS и Ago
- грузовики, которые загружены PMS в модельном заказе, имеют удельный объем 35000и volume_delivered должен быть немного короче, чем 35000, например, 34294
- грузовые автомобили, загруженные AGO, имеют свой конкретный объем, который составляет 33000, а volume_delivered может быть, например, 32294
- .Поле loading_average в Model Loaded является средним значением поля volume_delivered с указанным продуктом, будь то AGO или PMS, так как они имеют разные значения volume_delivered, поделенные на 1000
- , и ожидаемое количество в Model Loaded задано, то есть я приму значение
- Загруженное_количество в Загруженной модели должно быть суммой всех объемов, доставленных в Порядке модели сусиление PMS и AGO имеют различное значение volume_delivered, поэтому оно должно делать только сумму volume_delivered в Порядке модели для PMS, если продукт является PMS, и то же самое с AGO
- Остаток_квантовость должен представлять собой разницу между ожидаемым_квантованием и загруженным_квантованием
- Загруженные_труки должны быть суммой грузовых автомобилей в модели Order, и снова должны быть грузовые автомобили с PMS и грузовые автомобили с AGO.загруженные грузовики, если в модели загружен продукт PMS. Должна быть сумма грузовиков, для которых в заказе модели только PMS продукта, минус total_trucks для продукта PMS
- Остаток_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'.