1

这是代码:

querySet = dataModel.objects.all()
#assume the existance of a valid data model 'dataModel', assume it has a valid attribute 'attribute'

if all(object.attribute == '3' or object.attribute == '4' or object.attribute == '5' for object in querySet):
    #Do something
else:
    #Do somthing else

当我加载网页时,我得到以下信息:

Exception Value: global name 'all' is not defined

附加信息:

Django 版本:1.3.1

我正在尝试检查 中的每个对象queryset是否具有 3,4 或 5 的属性值。请告知。谢谢。

4

2 回答 2

3

错误是,all期望一个可迭代的作为参数,并且它得到了其他东西。

尝试这个:

if all([object for object in querySet if object.attribute == '3' or object.attribute == '4' or object.attribute == '5' ]):
    #Do something

但是,在我看来-这是错误的用法all()

考虑使用:

querySet = dataModel.objects.filter(attribute__in=[3, 4, 5])

if queryset.count():
    #do something
于 2013-10-15T20:39:05.037 回答
0

语法错误!

尝试类似:

如果 dataModel.objects.exclude(attribute__in=[3,4,5]).exists():
  # 我们在查询集中有属性不同于 3,4,5 的对象
别的:
  # 所有对象的属性等于 3,4 或 5

于 2013-10-15T20:38:39.827 回答