#python #django #django-models
Вопрос:
Поэтому я только начинаю с Django и использую его для хранения цен на форекс, которые представлены 1.21242
в виде 1.20641
, и т. Д…
model.py
from django.db import models
# Create your models here.
class ForexPrice(models.Model):
openPrice = models.DecimalField(max_digits=6, decimal_places=6)
highPrice = models.DecimalField(max_digits=6, decimal_places=6)
lowPrice = models.DecimalField(max_digits=6, decimal_places=6)
closePrice = models.DecimalField(max_digits=6, decimal_places=6)
Мой Вопрос Таков:
Как работают атрибуты max_decimal и decimal_places? Я использую 6 для обоих полей, предполагая max_digits=6
, что значения будут храниться до 6 цифр, т. Е.: 123456.000000, в то время decimal_palces=6
как будут поддерживаться значения до 000000.123456.
Правильно ли это предположение или я что-то упускаю?
При сохранении записи в БД возникает следующая ошибка:
Поле с точностью 6, шкала 6 должна округляться до абсолютного значения меньше 1.
Комментарии:
1. docs.djangoproject.com/en/3.2/ref/models/fields/#decimalfield
2. @iklinac Спасибо, что поделились ресурсом. Да, я видел их документацию, однако приведенный ими пример не имел для меня смысла, пока я не увидел ответ KKAs ниже.
Ответ №1:
max_digits
должно быть равно или выше, чем decimal_places
.
Если бы у вас было 123456.654321, вам пришлось бы определить max_digits=12
, decimal_places=6
.
max_digits
В ТОМ ЧИСЛЕ decimal_places
.
Комментарии:
1. Ааа… Я понимаю. Теперь это действительно имеет больше смысла. Итак, если бы я хотел поддержать что-то вроде 9.123456, я бы использовал max_digits=7, decimal_places=6? Правильно?