используя возврат данных в моделях Django - PullRequest
0 голосов
/ 27 августа 2018

Я довольно новичок в Django и Python, и я пытаюсь разработать небольшой веб-сайт для подсчета общего количества минут в день за определенный период времени.

До сих пор я создал модель, содержащую поля со всей необходимой мне информацией и две функции в модели, которая вычисляет количество дней и количество минут за период времени.

Но теперь я застрял. Я пытался умножить результаты своих функций, но мне не удалось это сделать.

Я не знаю, правильно ли я это делаю или самый эффективный способ, я открыт для любых советов по улучшению моего кода

Большое спасибо

class Vacation (models.Model):
    reference = models.CharField(max_length=30, default='test')

    start_date = models.DateField(default=0)
    end_date = models.DateField(default=0)

    start_hour = models.TimeField(default=0)
    end_hour = models.TimeField(default=0)

    monday = models.BooleanField()
    tuesday = models.BooleanField()
    wednesday = models.BooleanField()
    thursday  = models.BooleanField()
    friday = models.BooleanField()
    saturday = models.BooleanField()
    sunday = models.BooleanField()

    @property
    # these are not the actual functions but only the results they give me
    def calcul_jours(self):
        work_days = [1, 1, 0, 0, 1, 1, 0]
        day_list = [6, 6 , 0, 0, 7, 7, 0]
        return day_list

    def calcul_heures(self):
        day_minutes = [180, 90, 0, 0, 90, 90, 90]
        night_minutes = [540, 360, 0, 0, 180, 360, 180]
        day_night = np.array([day_minutes, night_minutes])

        return day_night

    def multiplication(self):
        days = Calcul.calcul_jours
        minutes = Calcul.calcul_heures

        multiplication = np.multiply(days, minutes)
        return multiplication

1 Ответ

0 голосов
/ 27 августа 2018

numpy - отличная библиотека, но вы собираетесь на собственном опыте узнать, как много может быть! @ # $% ^ Программирования во временных типах данных. Здесь я избавлю вас от головной боли, numpy поддерживает этот тип данных . Поначалу это может не иметь смысла, но вы, возможно, захотите вычислить вещи, используя эти методы, когда это возможно. Другой вариант - встроенная в Python библиотека datetime . Надеюсь, это поможет вам вычислить вещи так, как вы хотите.

Что касается эффективности, будьте осторожны при использовании модели @property s. Они полезны для создания «вычисляемых полей», как вы делаете здесь, но если вы когда-нибудь поместите запрос в свойство, вы будете эффективно вызывать 2 запроса каждый раз, когда вызываете это свойство. Это делает отображение больших объемов данных очень сложным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...