"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
)