2014-02-28 27 views
0

我有這樣的事情:如何在Django中表示一個「全局」枚舉?

class Car(models.Model): 

    TYPE_CHOICES = (
     (1, 'Mercedes'), 
     (2, 'Audi'), 
     (3, 'BMW'), 
    ) 

    car_type = models.CharField(max_length=15, choices=TYPE_CHOICES) 

現在我想在另一種情況下(不是這個模型中)來篩選汽車,什麼是最好的方法是什麼?

cars = Car.objects.filter(car_type=????) 

有人知道是否有可能有一個全球常數?和過濾這樣的:

cars = Car.objects.filter(car_type=mercedes) 

或者另一種方式......

+0

你就不能鍵入它作爲一個字符串? 'car = Car.objects.filter(car_type ='Mercedes')'或者導入Car並執行:'cars = Car.objects.filter(car_type = Car.TYPE_CHOICES [0] [1])' –

+0

會很好,但是如果汽車的名字改變了?我必須到處換... – Lara

回答

3
class Car(models.Model): 
    TYPE_MERCEDES = 1 
    TYPE_AUDI = 2 
    TYPE_BMW = 3 

    TYPE_CHOICES = (
     (TYPE_MERCEDES, 'Mercedes'), 
     (TYPE_AUDI, 'Audi'), 
     (TYPE_BMW, 'BMW'), 
    ) 

    car_type = models.CharField(max_length=15, choices=TYPE_CHOICES) 

,並篩選使用:

Car.objects.filter(car_type=Car.TYPE_MERCEDES) 
+0

作品!謝謝! – Lara