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代码。
答案 0 :(得分:1)
您可以使用set
和&
运算符执行|
个对象的交叉点和联合:
intersection = queryset1 & queryset2
union = queryset1 | queryset2