Kpblc
@Kpblc

Как считать значения при сохранении изменений записи в Django?

Пользователь вносит значения размера, но вычисления объёма не считаются и не записываются в соответствующие поля базы. Что я делаю не так
# models.py
class myModel(models.Model):
    #мера длины
    length_units_param = (('mm', 'mm'), ('cm', 'cm'), ('m', 'm'),)

    name = models.CharField(max_length=150,
                            verbose_name='Название', help_text='Введите название',
                            null=False, blank=False)
    length_units = models.CharField(max_length=2, choices=length_units_param, default='mm',
                                       help_text="Единица измерения длины", verbose_name="Единица длины",
                                       null=False, blank=True)
    sku_prod_height = models.DecimalField(max_digits=6, decimal_places=2,
                                          help_text="Высота SKU", verbose_name='Высота',
                                          null=True, blank=True)
    sku_prod_length = models.DecimalField(max_digits=6, decimal_places=2,
                                          help_text="Длина SKU", verbose_name='Длина',
                                          null=True, blank=True)
    sku_prod_depth = models.DecimalField(max_digits=6, decimal_places=2,
                                         help_text="Глубина SKU", verbose_name='Глубина',
                                         null=True, blank=True)

### Объём
    def math_sku_pack_vol_m3(self):
        a = self.sku_prod_height
        b = self.sku_prod_length
        c = self.sku_prod_weight
        if self.length_units == 'mm':
            self.sku_pack_vol_m3 = ((a * 1000) * (b * 1000) * (c * 1000))
            print('Объём: ' + self.sku_pack_vol_m3)
            return self.sku_pack_vol_m3
        elif self.length_units == 'cm':
            self.sku_pack_vol_m3 = ((a * 100) * (b * 100) * (c * 100))
            print('Объём: ' + self.sku_pack_vol_m3)
            return self.sku_pack_vol_m3
        else:  # self.length_units == 'm':
            print('Объём: ' + self.sku_pack_vol_m3)
            self.sku_pack_vol_m3 = (a * b * c)
            return self.sku_pack_vol_m3

    sku_pack_vol_m3 = models.DecimalField(default=math_sku_pack_vol_m3, max_digits=10, decimal_places=2,
                                          verbose_name='Куб. метр, м³', help_text="Куб. метр, м³",
                                          null=True, blank=True)

    def math_sku_pack_vol_l(self):
        self.sku_pack_vol_l = self.sku_pack_vol_m3 * 1000
        print('Объём, Л: ' + self.sku_pack_vol_l)
        return self.sku_pack_vol_l

    sku_pack_vol_l = models.DecimalField(default=math_sku_pack_vol_l, max_digits=10, decimal_places=2,
                                         verbose_name='Объём, Л', help_text="Объём, Л",
                                         null=True, blank=True)
  • Вопрос задан
  • 74 просмотра
Решения вопроса 1
Mi11er
@Mi11er
A human...
Чтоб в БД что то записалось, надо это записать и сохранить (self.save())
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы