2016-09-19 50 views
0

在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

您可以使用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)