Django'动态'过滤

时间:2015-10-21 17:12:05

标签: django filter

我有一份清单,     l = ['XXX','YYY']

我需要使用list的这些元素来筛选我的模型(这些元素的数量不会是常数)

例如。我的模型中有代码字段,代码为“XXX”的元素很少,代码“YYY”很少,“ZZZ”很少,等等。我有一个列表,其中包含 - 例如 - ['XXX', 'YYY']我需要从db获得包含代码XXX和YYY的记录。

我不知道什么时候可以开始。

2 个答案:

答案 0 :(得分:4)

Letsay你在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)

答案 1 :(得分:4)

您的清单:

lst = ['XXX', 'YYY']

现在你可以过滤:

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