根据当前登录的用户自定义django表单

根据当前登录的用户自定义django表单

本文介绍了根据当前登录的用户自定义django表单的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我forms.py的一部分。

This is a part of my forms.py

class SubjectForm(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')
class Meta:
    model = Subject
    fields = ('title','body','board')

现在,它在Board表单字段中呈现所有Board对象,但我只想呈现用户已订阅的那些Board。如何获得用户表格并进行操作?

Right now it's rendering all Board objects in board form field but I want to render only those boards in which the user has subscribed. How can I get user in form and manipulate it?

推荐答案

forms.py:

class SubjectForm(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 is not None:
            self.fields['board'].queryset = Board.objects.filter(user=user)

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

views.py:

demo with CreateView:

demo with CreateView:

class SubjectCreateView(CreateView):
    form_class = SubjectForm
    template_name = 'subject/create.html'
    success_url = '/'

    def get_form_kwargs(self):
        kwargs = super(SubjectCreateView, self).get_form_kwargs()

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

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

这篇关于根据当前登录的用户自定义django表单的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-12 21:57