私は現在のユーザが属するチームに限定されるフィールド "チーム"を持つフォームセットを持っています。Djangoフォームセットで利用可能な選択肢を制限する
def edit_scrapbook(request):
u=request.user
ScrapbookAjaxForm = modelformset_factory(Scrapbook, fields=
('description','status','team'))
choices=False
for t in u.team_set.all():
if choices:
choices=choices,(t.id,t.name)
else:
choices=choices,(t.id,t.name)
if request.method == 'POST':
formset = ScrapbookAjaxForm(request.POST,
queryset=Scrapbook.objects.filter(owner=u))
if formset.is_valid():
instances=formset.save(commit=False)
for i in instances:
i.owner=request.user
i.save()
formset.save_m2m()
return HttpResponseRedirect(reverse('scrapbooks.views.index'))
else:
formset = ScrapbookAjaxForm(queryset=Scrapbook.objects.filter(owner=u))
for form in forms:
for field in form:
if field.label == 'Team':
field.choices=choices
c=RequestContext(request)
return render_to_response('scrapbooks/ajax_edit.html',
{'fs':formset},context_instance=c)
これは、すべてのフォームでの選択に影響を与えていないようです。これはかなり醜いです。おそらくこの問題をあまりにも長く見ている結果です。私もカスタムフォームセットを使用しようとしましたが、私はパラメータを受け入れるカスタムフォームセットを取得するように見えることはできません。
サブセレクトの[チーム]フィールドの選択肢を、フォームセット内のユーザーのチームに基づいて制限する方法を教えてください。 django model documentationから
どのようにしてオブジェクトのリストをformsetに送信できますか?これは私が問題を抱えているところで、私はformsetに固執するビューで私が行う設定を取得するように見えることはできません。 –
これで、イテラブルのリストを設定する方法を追加しました。 –