-1
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) 颜色

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

正是出于这个目的,我想要一个与上述代码等效的代码。现在union()andintersect()函数只是我真正想要正确的 django/python 代码的伪代码。

4

1 回答 1

1

set您可以使用&and运算符执行对象的交集和并集|

intersection = queryset1 & queryset2

union = queryset1 | queryset2
于 2013-10-15T21:59:27.683 回答