Django ModelForm не работает с десятичным полем - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть модель Django с DecimalField, например:

CHOICES = [
    ("0.1", "0.1"),
    ("0.2", "0.2"),
    ("0.3", "0.3"),
    ...
]

class MyModel(Model)
    field = models.DecimalField(
        max_digits=10,
        default="1.0",
        decimal_places=1,
        choices=CHOICES
    )

У меня есть ModelForm

class MyForm(ModelForm):
    class Meta:
        model = MyModel
        exclude = []

Когда я пытаюсь сохранить форму, я получаю следующую ошибку:

Select a valid choice. 0.1 is not one of the available choices.

"0.1" в моем выборе.Что не так с моей настройкой?

1 Ответ

1 голос
/ 02 апреля 2019

Хотя строковые представления десятичных знаков будут проходить проверку формы ChoiceField в Django, она не пройдет проверку ModelForm.Вам нужно использовать десятичные объекты вместо строк:

from decimal import Decimal

CHOICES = [
    (Decimal("0.1"), "0.1"),
    (Decimal("0.2"), "0.2"),
    (Decimal("0.3"), "0.3"),
    ...
]

class MyModel(Model)
    field = models.DecimalField(
        max_digits=10,
        default=Decimal("1.0"),
        decimal_places=1,
        choices=CHOICES
    )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...