モデルのデータに基づいてChoiceFieldを定義しています。
field = forms.ChoiceField(choices=[[r.id, r.name] for r in Model.objects.all()])
ただし、「no」オブジェクトを選択するには、オプションの前に空のオプションを追加したいと思います。しかし、私はそれを前に付ける良い方法を見つけることができません。
私のすべてのテストは次のようになります:
field = forms.ChoiceField(choices=[[0, '----------']].extend([[r.id, r.name] for r in Model.objects.all()]))
「NoneTypeオブジェクトは反復できません」というエラーを返します。私が今まで見つけた唯一の方法は次のとおりです:
def append_empty(choices):
ret = [[0, '----------']]
for c in choices:
ret.append(c)
return ret
そして、私が自分のフィールドを定義するとき:
forms.ChoiceField(choices=append_empty([[r.id, r.name] for r in
Restaurant.objects.all()]), required=False)
ただし、コードをクリーンに保ち、そのような恐怖を持たないようにしたいと思います。アイデアはありますか?:pよろしくお願いします。