Django中阵列的联合和交集

时间:2013-10-15 10:04:02

标签: python mysql django

if(filter[0][0]):
    films_material_PP = GlassFilm.objects.filter(f_material = 'PP')
else:
    films_material_PP = GlassFilm.objects.none()

if(filter[0][1]):
    films_material_PVC = GlassFilm.objects.filter(f_material = 'PVC')
else:
    films_material_PVC = GlassFilm.objects.none()


if(filter[1][0]):
    films_color_Grey = GlassFilm.objects.filter(f_color = 'Grey')
else:
    films_color_Grey = GlassFilm.objects.none()

if(filer[1][1]):
    films_color_Yellow = GlassFilm.objects.filter(f_color = 'Yellow')
else:
    films_color_Yellow = GlassFilm.objects.none()

films_material.union(films_material_PP,films_material_PVC)
films_color.union(films_color_Grey,films_color_Yellow)
films_total.intersect(films_material,films_color)

我们如何在Django中实现最后三个语句?我已经看到过这样的其他问题,请注意我不是在寻找

GlassFilm.objects.filter((Q(f_material = 'PP') | Q(f_material = 'PVC')) & (Q(f_color = 'Grey')|Q(f_color = 'Yellow')))

* 编辑: *这是我想要实现的目标。我向用户提供了两种类型的HTML复选框 (1)材料 (2)颜色

在材料中,用户可以勾选两个选项“PP”和“PVC”。类似地,用户可以勾选的颜色(“灰色”和“黄色”)中有两个复选框。 如果用户勾选“PP”和“灰色”,我想显示具有这两个属性的对象。如果用户仅勾选“PP”,我只想显示材料为“PP”的对象。如果用户同时勾选“PP”和“PVC”,那么我想显示那些材料为“PP”或“PVC”的对象。

为此,我想要一个与上述代码等效的代码。现在union()intersect()函数只是伪代码,我真的想要正确的django / python代码。

1 个答案:

答案 0 :(得分:1)

您可以使用set&运算符执行|个对象的交叉点和联合:

intersection = queryset1 & queryset2

union = queryset1 | queryset2