Попытка сделать расчет на моделях django

У меня есть два целочисленных поля, которые я хочу разделить, чтобы получить значение третьего поля. @property def Pallets_Count (self): вернуть self.CASES / self.CasesPerPallet

но результат в базе данных всегда показывает ноль.


person Mahmoud khaywe    schedule 08.12.2020    source источник


Ответы (1)


@property 
def Pallets_Count(self): 
    return self.CASES/self.CasesPerPallet

@property ничего не сохранит в поле вашей модели. Это работает как метод. Вы можете вызвать в своем шаблоне как поле модели mypost.Pallets_Count.

Если вы хотите поместить результат в поле базы данных, вам нужно переопределить метод save. Но, возможно, в этом нет необходимости. Собственности, скорее всего, хватит.

class MyModel(models.Model):
     # your other fields
     fieldname = models.FloatField()

     def save(self, *args, **kwargs):
         self.fieldname = self.CASES/self.CasesPerPallet
         super(MyModel, self).save(*args, **kwargs)
person ha-neul    schedule 08.12.2020
comment
что, если мне нужно иметь более одного уравнения для одной и той же модели? как в таком случае будет работать сохранение? - person Mahmoud khaywe; 09.12.2020
comment
Просто добавьте еще одно поле и добавьте еще один Lin в метод сохранения. - person ha-neul; 09.12.2020
comment
Большое спасибо, еще один вопрос, нужно ли мне использовать Float? что, если мне нужны десятичные дроби? - person Mahmoud khaywe; 09.12.2020
comment
что бы вы ни чувствовали, что должны использовать. Numberfield - это просто пример. - person ha-neul; 09.12.2020