如何从inlineformset_factory将查询集传递给BaseInlineFormSet

时间:2012-03-08 19:48:41

标签: django django-forms

我知道我可以将formset传递给inlineformset_factory,默认情况下需要使用BaseInlineFormSet。我也知道BaseInlineFormSet可以将查询集作为参数。如何连接点以允许我传入基于对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 个答案:

答案 0 :(得分:1)

FWIW使用以下方法解决了这个问题。我转而使用基于类的视图并使用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