【问题标题】:"ValidatioError: Value ... is not a valid choice" in Django even with a valid choice即使选择有效,Django 中的“ValidatioError: Value ... is not a valid choice”
【发布时间】:2022-01-07 16:38:58
【问题描述】:

我有一个带有 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 不是一个有效的选择,我无法理解如何正确配置它。我试过CharFieldTextFieldIntegerField

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

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

【问题讨论】:

    标签: python django django-models


    【解决方案1】:

    因为这是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
        )

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-05
      • 1970-01-01
      • 2022-06-21
      • 2022-01-06
      • 2011-10-20
      • 1970-01-01
      • 1970-01-01
      • 2018-03-29
      相关资源
      最近更新 更多