我知道我可以将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())
任何帮助都将不胜感激。
答案 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