Python Django помощь в написании расчетов

hellhyde

Новичок
Пользователь
Июл 28, 2020
28
4
3
Доброго всем дня!
Изучаю Джанго, вот стала передомной такая задачка.
Задача

Написать функцию расчета средней закупочной цены материала без НДС по следующей логике:
для каждой даты Х средняя цена материала считается как средняя цена закупки материала за последние 30 дней
сделать это свойством модели ProductionConsumed (@property)

Ожидаемый результат - при вызове свойства модели ProductionConsumed мы получаем среднюю закупочну цену этого материала.

Выполните задание и сбросьте ссылку на новый репо или название Вашей ветки

Тут ссылка на ззадание с файлами


задание

Я запустил сервер с этими файлами,нужно добавить туда отедльный скрипт обсчета ?

Если можно,опишите пожалуйста подробнее как тут поступить.
Спасибо
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Я запустил сервер с этими файлами,нужно добавить туда отедльный скрипт обсчета ?
В задание написано что нужно добавить свойство (property) к модели ProductionConsumed.
Вот так примерно:
Python:
import datetime


class ProductionConsumed(models.Model):
    ...
    @property
    def av_price(self):
        # получаем закупки материала за последний месяц
        purchases = Purchase.objects.filter(
            material=self.consumed,
            purch_date__gte=datetime.datetime.now() - datetime.timedelta(days=30)
        )
        # получаем среднюю цену закупок без ндс
        price = sum([p.price_ex_vat for p in purchases]) / len(purchases)
        return price
 
  • Мне нравится
Реакции: hellhyde

hellhyde

Новичок
Пользователь
Июл 28, 2020
28
4
3
В задание написано что нужно добавить свойство (property) к модели ProductionConsumed.
Вот так примерно:
Python:
import datetime


class ProductionConsumed(models.Model):
    ...
    @property
    def av_price(self):
        # получаем закупки материала за последний месяц
        purchases = Purchase.objects.filter(
            material=self.consumed,
            purch_date__gte=datetime.datetime.now() - datetime.timedelta(days=30)
        )
        # получаем среднюю цену закупок без ндс
        price = sum([p.price_ex_vat for p in purchases]) / len(purchases)
        return price
Это нужна вставлять в файл models? под class ProductionConsumed(models.Model):
где ниже описаны свойства каждой из пунктов товаров ?
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Это нужна вставлять в файл models? под class ProductionConsumed(models.Model):
где ниже описаны свойства каждой из пунктов товаров ?
Да. В коде же показано что в class ProductionConsumed после всех полей и класса Meta.
 
  • Мне нравится
Реакции: hellhyde

hellhyde

Новичок
Пользователь
Июл 28, 2020
28
4
3
Да. В коде же показано что в class ProductionConsumed после всех полей и класса Meta.
А ну я так и вставил, а оно просто на purch = Purchase.objects.filter ругается на objects, что его нету в классе purchase
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
objects есть у любой модели - это стандартный менеджер.
Я проверял код на моделях из вашего репозитория - код работает.
Возможно вы не сделали миграции.
 
  • Мне нравится
Реакции: hellhyde

Форум IT Специалистов