У меня есть таблица базы данных, например, значение веса, например
CREATE TABLE product (
id SERIAL NOT NULL,
product_name item_name NOT NULL,
.
.
weight NUMERIC(7,3), -- the weight in kg
.
.
CONSTRAINT PK_product PRIMARY KEY (id)
);
Это результат модели:
class Product(models.Model):
.
weight = models.DecimalField(max_digits=7, decimal_places=3, blank=True, null=True)
.
Я храню вес в килограммах, то есть 1 кг - это запасы, поскольку 1, 0,1 кг или 100 г - как 0,1
Чтобы облегчить пользователю, я отображаю вес в списке администратора в граммах, указав:
def show_weight(self):
if self.weight:
weight_in_g = self.weight * 1000
return '%0f' % weight_in_g
Так, если продукт весит, например, 0,5 кг и хранится в базе данных как таковой, на дисплее администратора отображается 500
Есть ли способ изменить число, показанное в окне «Изменить продукт». Это окно теперь показывает значение, извлеченное из базы данных, то есть 0,5. Это смущает пользователя, когда я говорю ему с помощью help_text, чтобы ввести число в g, при этом видя количество килограммов.
Перед сохранением продукта я перезаписываю сохранение следующим образом:
def save(self):
if self.weight:
self.weight = self.weight / 1000
Преобразует число, введенное в граммах, в килограммы.