4

私は inlineformset_factory を使用してフォームセットを生成しています:

FormSet = inlineformset_factory(Model1, Model2, extra=0)
if request.method =="POST":
    formset = FormSet(request.POST, instance=model1_object)
    if formset.is_valid():
        formset.save()
        return HttpResponseRedirect( reverse-blah )
else:
    formset = PupsFormSet(instance=model1_object,)
return render_to_response("template.html", {"formset":formset, 'model1_object':model1_object},context_instance=RequestContext(request)) 

2つの質問があります

  1. 適用可能なすべてのオブジェクトが存在するのではなく、フィルタリングされたサブセットのみが存在するように、Model2 オブジェクトを制限するにはどうすればよいですか?
  2. フォームセットでクラスベースのビューを使用するためのコード例はありますか?

質問#1に答える機能するコードで更新

FormSet = inlineformset_factory(Model1, Model2, extra=0)
if request.method =="POST":
    formset = FormSet(request.POST, instance=model1_object, queryset=Model2.objects.filter(foo=bar))
    if formset.is_valid():
        formset.save()
        return HttpResponseRedirect( reverse-blah )
else:
    formset = PupsFormSet(instance=model1_object, queryset=Model2.objects.filter(foo=bar))
return render_to_response("template.html", {"formset":formset, 'model1_object':model1_object},context_instance=RequestContext(request))
4

1 に答える 1

8

これは役に立ちますか?https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#changing-the-queryset

基本的に、フォームセットを作成するときは、querysetkwargを使用してみてください。

于 2011-08-27T04:26:34.610 に答える