"ValidatioError: Value ... is not a valid choice" in Django even with a valid choice
"ValidatioError: Value ... is not a valid choice" in Django even with a valid choice
我有一个带有 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
,键应该是 strings,所以 '0'
,而不是 0
:
OBJECT_TYPES = (
(<strong>'</strong>0<strong>'</strong>, "analog-input"),
(<strong>'</strong>1<strong>'</strong>, "analog-output"),
(<strong>'</strong>2<strong>'</strong>, "analog-value")
)
另一种方法是使用 IntegerField
:
OBJECT_TYPES = (
(0, "analog-input"),
(1, "analog-output"),
(2, "analog-value")
)
class MyModel(models.Model):
object_type = models.<strong>IntegerField(</strong>
choices=OBJECT_TYPES,
blank=True,
null=True
<strong>)</strong>
我有一个带有 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
,键应该是 strings,所以 '0'
,而不是 0
:
OBJECT_TYPES = (
(<strong>'</strong>0<strong>'</strong>, "analog-input"),
(<strong>'</strong>1<strong>'</strong>, "analog-output"),
(<strong>'</strong>2<strong>'</strong>, "analog-value")
)
另一种方法是使用 IntegerField
:
OBJECT_TYPES = (
(0, "analog-input"),
(1, "analog-output"),
(2, "analog-value")
)
class MyModel(models.Model):
object_type = models.<strong>IntegerField(</strong>
choices=OBJECT_TYPES,
blank=True,
null=True
<strong>)</strong>