【问题标题】:Get current user in Django modelformset_factory在 Django modelformset_factory 中获取当前用户
【发布时间】:2021-12-18 13:43:00
【问题描述】:

我需要在 forms.py 中过滤与当前用户来自同一公司的员工。 但我找到的解决方案仅适用于单个 Formset。

如果我尝试使用 modelformset_factory 传递 request.user 以生成多个表单集,我会收到以下错误:

'MassnahmeForm' object has no attribute '__name__'

我能做什么?

最好的问候 博斯扬

views.py:

frm = MassnahmeForm(user=request.user)
mformset = modelformset_factory(Massnahmen, form=frm, extra=mn.count())

forms.py:

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')

【问题讨论】:

    标签: django forms


    【解决方案1】:

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

    MassnahmeFormSet = modelformset_factory(
        model = Massnahme,
        form = MassnahmeForm,
        extra = mn.count()
    )
    formset = MassnahmeFormSet(form_kwargs={'user': request.user})
    
    

    【讨论】:

    • 非常感谢 - 昨天 6 小时后,您今天拯救了我的一天 :-)
    猜你喜欢
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    • 2022-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-02
    • 2011-06-10
    相关资源
    最近更新 更多