2015-10-21 96 views
2

我已列表, 升= [「XXX」,「YYY」]Django的「動態」過濾

我需要filtred我的模型與列表的這個元件(此元件的數目將不恆定)

例如。我在我的模型中有代碼字段,並且代碼爲「XXX」的元素很少,代碼爲「YYY」的元素很少,很少有「ZZZ」等。我有一個列表,其中包含 - 例如 - ['XXX', 'YYY']我需要從db獲取代碼爲XXX和YYY的記錄。

我不知道什麼時候可以開始。

+0

([Django的與值列表過濾器]的可能的複製http://stackoverflow.com/questions/9304908/django的過濾器與 - 列表的值) –

回答

4

爲了讓您的車庫有儲存的汽車,您在Django有一個模型。

class Car(models.Model): 
    manufactirer = models.Charfield(max_length=100) 
    make = models.DatetimeField() 
    anotherfield = ...... 

現在製造商的名稱來過濾這些車,你可以這樣做:

Car.objects.filter(manufacturer='BMW') 

如果你要通過所有的德國製造商來篩選汽車,你可以做這樣的事情:

manufacturer_list = ['BMW', 'VW', 'AUDI'] 
Car.objects.filter(manufacturer__in=manufacturer_list) 

這是SQL相當於

SELECT ... WHERE manufacturer IN ('BMW', 'VW', 'AUDI'); 

您還可以使用查詢集首先動態獲取值列表。這在製造商列表來自django查詢的情況下非常有用。

manufacturer_list = Manufacturer.objects.filter(name__contains='mer') 
cars = Car.objects.filter(manufacturer__in=manufacturer_list) 
4

列表:

lst = ['XXX', 'YYY'] 

現在,您可以過濾,如:

elements = Model.objects.filter(code__in=lst)