计数queryset返回'list'对象没有属性'id'

时间:2012-09-18 02:18:55

标签: python django django-orm

我有一个有很多专栏的模型。我想限制用户可以提交的组数。

这就是我正在做的事情

        group_name = [g.id for g in form.cleaned_data['groups']]
        gr=group_name.id.count()
        if gr>3:
            raise forms.ValidationError("you can only add 3 groups")
        return group_name

错误是:

 Exception Value: 'list' object has no attribute 'id'

我似乎无法找到我做错的事。感谢。

3 个答案:

答案 0 :(得分:2)

您正在创建list对象,因此标准list操作可以正常运行。

group_name_ids = [g.id for g in form.cleaned_data['groups']]
group_id_count = len(group_name_ids)

这里似乎"groups"是一个模型对象列表,所以你可以通过以下方式获得计数:

group_count = len(form.cleaned_data["groups"])

但是,由于您返回了生成的group_name_ids列表,因此您也可以获得len()列表。

答案 1 :(得分:0)

group_name是一个列表,group_name.id无法解析:)

答案 2 :(得分:0)

>>> nk=['city1','city2','city1','city3','city1']
>>> from collections import Counter
>>> mycount=Counter()
>>> for word in nk:
...     mycount[word]+=1
...     
>>> mycount['city1']
3
>>> 

参考python文档http://docs.python.org/library/collections.html