Skip to content Skip to sidebar Skip to footer

Customizing Django Form Based On Currently Logged In User

This is a part of my forms.py class SubjectForm(forms.ModelForm): title=forms.CharField(label='',widget=forms.TextInput(attrs={'maxlength':150,

Solution 1:

forms.py:

classSubjectForm(forms.ModelForm):
    title=forms.CharField(label='',widget=forms.TextInput(attrs={'maxlength':150,
                                                                 'placeholder':'Write here. . .'}))
    body=forms.CharField(label='', widget=forms.Textarea(attrs={'placeholder':'Extend here. . .'}))
    board=forms.ModelChoiceField(label='',queryset=Board.objects.all(), empty_label='Select Board')

    def__init__(self, *args, **kwargs):
        user = kwargs.pop('user', None)
        super(SubjectForm, self).__init__(*args, **kwargs)
        if user isnotNone:
            self.fields['board'].queryset = Board.objects.filter(user=user) 

    classMeta:
        model = Subject
        fields = ('title','body','board')

views.py:

demo with CreateView:

classSubjectCreateView(CreateView):
    form_class = SubjectForm
    template_name = 'subject/create.html'
    success_url = '/'defget_form_kwargs(self):
        kwargs = super(SubjectCreateView, self).get_form_kwargs()

        ifself.request.method == 'GET':
            kwargs.update({
                'user': self.request.user,
            })
        return kwargs

or

form = SubjectForm(**{'user': request.user})

Post a Comment for "Customizing Django Form Based On Currently Logged In User"