【发布时间】:2016-01-20 19:21:23
【问题描述】:
我有一个清单, l = ['XXX', 'YYY']
我需要用列表中的这个元素过滤我的模型(这个元素的数量不会是恒定的)
例如。我的模型中有代码字段,代码“XXX”的元素很少,代码“YYY”的元素很少,“ZZZ”的元素很少,等等。我有一个包含 - 例如 - ['XXX', 'YYY'] 我需要从 db 中获取代码为 XXX 和 YYY 的记录。
我不知道什么时候可以开始。
【问题讨论】:
我有一个清单, l = ['XXX', 'YYY']
我需要用列表中的这个元素过滤我的模型(这个元素的数量不会是恒定的)
例如。我的模型中有代码字段,代码“XXX”的元素很少,代码“YYY”的元素很少,“ZZZ”的元素很少,等等。我有一个包含 - 例如 - ['XXX', 'YYY'] 我需要从 db 中获取代码为 XXX 和 YYY 的记录。
我不知道什么时候可以开始。
【问题讨论】:
假设你在 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)
【讨论】:
您的清单:
lst = ['XXX', 'YYY']
现在你可以像这样过滤:
elements = Model.objects.filter(code__in=lst)
【讨论】: