2012-03-08 3 views
1

私はinlineformset_factoryにformsetを渡すことができますが、これはデフォルトでBaseInlineFormSetを受け取ります。私はまたBaseInlineFormSetがクエリーセットをパラメータとして取ることができることを知っています。 BaseInlineFormSetへのリクエストに基づいてクエリーセットを渡すことができるように、どのようにドットを接続しますか?inlineformset_factoryからクエリセットをBaseInlineFormSetに渡すには

要するに私はこれをしたいと思います。

base_qs = Inline_model.objects.filter(user = self.request.user) 
factory_kwargs = { formset=BaseInlineFormSet(queryset=base_qs) } 
formset = inlineformset_factory(ModelA, Inline_model, **factory_kwargs()) 

ご協力いただければ幸いです。

答えて

1

これを以下の方法を用いて解決した。クラスベースのビューを使用し、django-extra-views packageを使用するように変更しました。これは明らかに私自身のクエリーセットでget_formset_kwargsメソッドをオーバーライドすることができました。

class CompanyDetailView(InlineFormSetView): 
    """Details of the Company Page""" 
    model = Company 
    inline_model = CompanyDocument 
    fields=('document', 'description') 
    can_delete=True 
    extra = 1 

    def get_formset_kwargs(self): 
     """Limit the queryset to only those which I have""" 
     qs = CompanyDocument.objects.filter(company=self.request.user.company, 
              shared_company = self.object,) 
     kwargs = super(CompanyDetailView, self).get_formset_kwargs() 
     kwargs['queryset'] = qs 
     return kwargs 
関連する問題