2012-09-18 53 views
0

我有一個manytomany列的模型。我想限制用戶可以提交的組數。計數queryset返回'list'對象沒有屬性'id'

下面是我在做什麼

 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' 

我似乎無法找到我做錯了。謝謝。

回答

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()

+0

謝謝!我沒有深入探討len,因爲[文檔](https://docs.djangoproject.com/en/dev/ref/models/querysets/#when-querysets-are-evaluated)說: 「注意:Don'如果你想要做的只是確定集合中的記錄數,那麼在QuerySets上使用len()。但是如此小的一組,這並不重要。謝謝! – jabs

+0

是的,對於查詢集您應該使用.count(),但是在這裏您引用表單的cleaned_data字典並創建一個id列表。 – monkut

0

group_name是一個列表,group_name.id解決不了:)

+0

感謝您的響應葉夫根。我怎樣才能讓它成爲可數?或者,有沒有一種方法來計數清空數據? – jabs

+0

對不起,我不熟悉Django。你想做什麼?也許len(group_name)做你想要的? –

+0

這是解決方案,但monkut首先到達那裏。 – jabs

相關問題