"ValidatioError: Значение ... не является допустимым выбором" в Django даже при допустимом выборе

У меня есть модель с полем object_type, где варианты выбора должны быть числами, а читаемой человеком строкой, как показано ниже:

OBJECT_TYPES = (
    (0, "analog-input"),
    (1, "analog-output"),
    (2, "analog-value")
)

class MyModel(models.Model):
    object_type = models.CharField(
        max_length=20,
        choices=OBJECT_TYPES,
        blank=True,
        null=True
    )

Однако, когда я пытаюсь создать объект и присвоить целочисленное значение объекту object_type, я получаю ValidationError, что object_type не является допустимым выбором, и я не могу понять, как правильно его настроить. Я пробовал с CharField, TextField и IntegerField.

obj = MyModel.objects.create(object_type=2)
obj.full_clean()

ValidationError: {'object_type': ["Value '2' is not a valid choice."]}

Поскольку это CharField, ключи должны быть строками, поэтому '0', а не 0:

OBJECT_TYPES = (
    ('0', "analog-input"),
    ('1', "analog-output"),
    ('2', "analog-value")
)

альтернативой является работа с IntegerField:

OBJECT_TYPES = (
    (0, "analog-input"),
    (1, "analog-output"),
    (2, "analog-value")
)

class MyModel(models.Model):
    object_type = models.IntegerField(
        choices=OBJECT_TYPES,
        blank=True,
        null=True
    )
Вернуться на верх