如何将kwargs从ModelAdmin传递到ModelForm

时间:2019-11-17 04:29:37

标签: django python-3.x

我有一个名为ModelForm的{​​{1}},它从视图传递给用户,但是我不确定如何将用户从MemoForm传递到ModelAdmin

备忘录表格

MemoForm

ModelAdmin

class MemoForm(forms.ModelForm):
    title = forms.CharField()
    content = forms.CharField(widget=forms.Textarea)
    important = forms.CheckboxInput()
    receiver = forms.ModelMultipleChoiceField(
        queryset=None,
        required=True,
        widget=forms.CheckboxSelectMultiple
    )

    def __init__(self, *args, **kwargs):
        self.user = kwargs.pop('user')  # passing in the user
        super(MemoForm, self).__init__(*args, **kwargs)
        self.fields['receiver'].queryset = EmployeeType.objects.filter(
            casino=self.user.casino
        )

我有几个问题:

  • 视图和管理员都可以使用同一表格,对吗?
  • 如果是这样,如何将用户从class CustomMemoAdmin(admin.ModelAdmin): form = MemoForm def get_form(self, request, obj=None, **kwargs): form = super().get_form(request, obj, **kwargs) if not request.user.is_superuser: self.fields = ( 'title', 'content', 'important', 'receiver', 'read', 'unread', 'word_file', ) self.filter_horizontal = ('casino',) return form(user=request.user) # passing the user through the form here. 转到MemoForm
  • 我应该为管理员创建另一个ModelAdmin并在ModelForm中初始化用户吗?

这是我尝试使用以下设置从“管理”面板添加记事时遇到的错误:

ModelAdmin

0 个答案:

没有答案