【问题标题】:Django 'dynamic' filteringDjango“动态”过滤
【发布时间】:2016-01-20 19:21:23
【问题描述】:

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

我需要用列表中的这个元素过滤我的模型(这个元素的数量不会是恒定的)

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

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

【问题讨论】:

标签: django filter


【解决方案1】:

假设你在 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)

【讨论】:

    【解决方案2】:

    您的清单:

    lst = ['XXX', 'YYY']
    

    现在你可以像这样过滤:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-24
      • 2016-05-30
      • 2011-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多