在枚举字段中设置值

时间:2016-09-19 14:38:55

标签: django django-models django-filter

在django中,你应该在你的模型中使用它作为枚举字段(如果我理解正确的话,我对Django的工作时间不长):

class Car(models.Model):
  TYPE = ( ('SUV','race') )

  type = models.CharField(choices=TYPE, default='SUV', max_length=20)

稍后,在过滤器中,我可以使用它:

suvs = models.Car.objects.filter(type='SUV')

但这意味着一个简单的拼写错误(SUB而不是SUV)可能会导致错误,但代码无法解决此问题。有没有解决的办法?或许像

suvs = models.Car.objects.filter(type=models.Car.TYPE.SUV)

1 个答案:

答案 0 :(得分:1)

您可以使用django-choices包来表示这样的行为。使用它,您可以:

class Car(models.Model):
    class CarType(DjangoChoices):
        SUV = ChoiceItem('something')
        BUS = C('something else')

    type = models.CharField(choices=CarType.choices, default=CarType.SUV, max_length=20)

稍后再使用它:

suvs = models.Car.objects.filter(type=models.Car.CarType.SUV)