我面临着极具挑战性的事情:
我需要inlineformset_factory
将我的ParentEntity
连接到我的外键绑定ChildEntities
。
我的ChildEntity
包含我需要为每个登录用户进行过滤的外键关系 - 所以我需要ChildForm
中的请求。
到目前为止我尝试过:
form=
kwarg,但我无法传递一个实例 - 只是一个类。所以我没办法在这里添加请求。formset=
kwarg,但当我尝试将request=request
作为inlineformset_factory
的kwarg传递时,我收到错误(意外的kwarg)知道我能做什么吗?
谢谢! 罗恩
答案 0 :(得分:5)
有时候询问同事的速度甚至比StackOverflow
更快:)
这是我的解决方案:
<强> forms.py 强>
class BaseFormSet(BaseInlineFormSet):
def __init__(self, *args, **kwargs):
self.request = kwargs.pop("request", None)
super(BaseFormSet, self).__init__(*args, **kwargs)
<强> views.py 强>
MyFormSet = inlineformset_factory(ParentEntity, ChildEntity, formset=BaseFormSet, form=ChildForm, extra=2, max_num=max_num, can_delete=False)
...
formset = MyFormSet(request.POST, instance=obj, request=request)
答案 1 :(得分:0)
你可以这样传递:
MyFormSet = inlineformset_factory(ParentEntity, ChildEntity, formset=BaseFormSet, form=ChildForm, extra=1)
formset = MyFormSet(form_kwargs={'request': request})
然后在您的 ChildForm 上:
def __init__(self, *args, **kwargs):
request = kwargs.pop('request', None)
super(ChildForm, self).__init__(*args, **kwargs)