0

多対多の列を持つモデルがあります。ユーザーが送信できるグループの数を制限したい。

これが私がしていることです

        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'

私は自分が間違っていることを見つけることができないようです。ありがとう。

4

3 に答える 3

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

于 2012-09-18T02:45:38.633 に答える
0
>>> nk=['city1','city2','city1','city3','city1']
>>> from collections import Counter
>>> mycount=Counter()
>>> for word in nk:
...     mycount[word]+=1
...     
>>> mycount['city1']
3
>>> 

pythondocumentaionhttp ://docs.python.org/library/collections.htmlを参照してください

于 2012-09-18T02:50:26.153 に答える
0

group_nameはリストであり、group_name.id解決できません:)

于 2012-09-18T02:23:34.063 に答える