django - 将请求用户添加到 InlineFormSet:TypeError: __init__() got an unexpected keyword argument 'user'
问题描述
我正在使用InlineFormSetView
fromextra_views
创建自定义内联表单。在表单保存时,我需要进行一些与请求用户相关的更改。所以表单中需要请求用户。根据我的发现,我想出了这个解决方案,但似乎get_formset_kwargs
可以在其他地方使用。导致发生异常。我不太确定是什么原因。可能有另一种解决方案将请求用户添加到内联表单。
看法:
class MyModelSetsView(InlineFormSetView):
model = MyModel
inline_model = MySubModel
form_class = MySubModelSetForm
template_name = "update_sets.html"
success_message = "Updated successfully."
permission_required = []
factory_kwargs = {
'extra': 1,
}
def get_success_url(self):
return self.object.get_absolute_url()
def get_formset_kwargs(self):
kwargs = super(MyModelSetsView, self).get_formset_kwargs()
kwargs.update({'user': self.request.user})
return kwargs
形式:
class MySubModelSetForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
self.user = kwargs.pop('user', None)
super(PeakPeriodSetForm, self).__init__(*args, **kwargs)
例外:
File "..\venv\lib\site-packages\extra_views\formsets.py", line 268, in get
formset = self.construct_formset()
File "...venv\lib\site-packages\extra_views\formsets.py", line 36, in construct_formset
return formset_class(**self.get_formset_kwargs())
File "...\venv\lib\site-packages\django\forms\models.py", line 897, in __init__
super().__init__(data, files, prefix=prefix, queryset=qs, **kwargs)
File "...\venv\lib\site-packages\django\forms\models.py", line 569, in __init__
super().__init__(**{'data': data, 'files': files, 'auto_id': auto_id, 'prefix': prefix, **kwargs})
TypeError: __init__() got an unexpected keyword argument 'user'
解决方案
我发现的解决方案是使用formset_valid
方法处理视图中的表单。
def formset_valid(self, formset):
for form in formset:
data= form.cleaned_data
print(data)
return super().formset_valid(formset)
推荐阅读
- r - 我想计算 R 中的 smooth.spline 拟合函数的 cv 误差,但是,它显示以下错误:
- objective-c - 如何检查该类是否由用户创建它是pobjective-c API中提供的类
- python - Python数据结构二叉搜索树
- identityserver4 - 从 IdentitySever4 获取刷新令牌
- sql - 提高 Join in Query 的性能
- sql - SQL从字符串中提取浮点值?
- javascript - 使用 three.js 重叠视口
- android - 如何在 Kotlin 中恢复暂停的 CountDownTimer
- java - JSON IOException 错误 每日预测没有值
- kubernetes - Kubernetes 需要分配真实的 IP 地址吗?