首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取Django modelformset_factory中的当前用户

获取Django modelformset_factory中的当前用户
EN

Stack Overflow用户
提问于 2021-11-04 09:58:18
回答 1查看 28关注 0票数 0

我需要在forms.py中筛选来自与当前用户相同公司的员工。但我发现的解决方案只适用于单个表单集。

如果我试图通过modelformset_factory传递request.user来生成多个表单集,我会得到以下错误:

代码语言:javascript
运行
复制
'MassnahmeForm' object has no attribute '__name__'

我能做什么?

向Bostjan致以最好的问候

views.py:

代码语言:javascript
运行
复制
frm = MassnahmeForm(user=request.user)
mformset = modelformset_factory(Massnahmen, form=frm, extra=mn.count())

forms.py:

代码语言:javascript
运行
复制
class MassnahmeForm(forms.ModelForm):
    id = forms.IntegerField(widget=forms.HiddenInput())
    pdca = forms.IntegerField(widget=forms.HiddenInput())
    status = forms.IntegerField(widget=forms.HiddenInput())

    def __init__(self, *args, **kwargs):
        self.user = kwargs.pop('user', None)
        print(self.user)
        super(MassnahmeForm, self).__init__(*args, **kwargs)

    class Meta:
        model = Massnahmen
        widgets = {
         'massnahme': forms.Textarea(attrs={'onkeyup':'resizeTextarea()', 'rows': 3, 'style': 'margin: -5px;'
                                            'width: 100%;'
                                            'height: 100%;'}),

         'umsetzer': forms.Select(choices=users, attrs={'style': 'width: 100%;'
                                                                 'margin: 0px;'
                                                                 'font-size: 100%;'
                                                                 'padding: 0px'}),

         'termin': forms.DateInput(attrs={'class': 'flatpickr flatpickr-input active',
                                          'placeholder': 'Termin',
                                          'readonly': 'readonly',
                                          'style': 'width: 100%;'
                                                   'margin: 0px;'
                                                   'font-size: 100%;'
                                                   'padding: 0px'}),

        }
        fields = ('massnahme','umsetzer','termin','status')
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-04 10:10:02

您需要在modelformset_factory中使用窗体的类,而不是一个实例。接下来,您可以使用表单集中的form_kwargs参数。

代码语言:javascript
运行
复制
MassnahmeFormSet = modelformset_factory(
    model = Massnahme,
    form = MassnahmeForm,
    extra = mn.count()
)
formset = MassnahmeFormSet(form_kwargs={'user': request.user})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69837367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档