Select 一个有效的选择。 2.6 不是可用的选择之一

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

我有一个模型,其中的字段具有如下所示的选项。我以某种方式弄乱了 DecimalField。而且我不能传递 1.7 或 2.6 这样的值。但它正在接受 1.0 和 2.0 。 请让我知道我做错了什么。

class Trip(models.Model):

    ACE = 1.00
    Dosth = 1.70
    TEN = 2.00
    FORTEEN = 2.30
    SEVENTEEN = 2.60
    NINETEEN = 2.90
    TWENTY = 3.10
    TWENTYTWO = 3.10

    VEH_CHOICES = (
        (ACE, 'ACE'),
        (Dosth, 'Dosth'),
        (TEN, '10.5FT'),
        (FORTEEN, '14FT'),
        (SEVENTEEN, '17FT'),
        (NINETEEN, '19FT'),
        (TWENTY, '20FT'),
        (TWENTYTWO, '22FT'),
    )
    ftype = models.DecimalField(null = True, blank = True, verbose_name = "Vehicle Type", decimal_places = 2, max_digits = 5, choices = VEH_CHOICES)

您需要将字段 DecimalField 更改为 FloatField 我给新模型更改

class Trip(models.Model):

    ACE = 1.00
    Dosth = 1.7
    TEN = 2.00
    FORTEEN = 2.30
    SEVENTEEN = 2.60
    NINETEEN = 2.90
    TWENTY = 3.10
    TWENTYTWO = 3.10

    VEH_CHOICES = (
        (ACE, 'ACE'),
        (Dosth, 'Dosth'),
        (TEN, '10.5FT'),
        (FORTEEN, '14FT'),
        (SEVENTEEN, '17FT'),
        (NINETEEN, '19FT'),
        (TWENTY, '20FT'),
        (TWENTYTWO, '22FT'),
    )
    ftype = models.FloatField(null = True, blank = True, verbose_name = "Vehicle Type", choices = VEH_CHOICES)

    def __str__(self):
        return str(self.ftype)

查看 DecimalFieldFloatField

的区别

将此代码更新为您的代码,看看它是否有效。如果它工作完美与否让我知道