小编Ari*_*rie的帖子

如何根据 Django 中的用户从 CreateView 中删除字段?

我创建了一个 CBV,我想根据用户删除其中的一个或多个字段。这个想法是一个工作场所,如果登录用户是招聘人员,employer则应包括该字段,否则应排除该字段。

表格.py

class JobCreationForm(forms.ModelForm):
    class Meta:
        model = Job
        # exclude = ['posted', 'provider', 'ext_id']
        fields = ('title',
                'job_desc', 
                'agency_name',
                'employer', 
                'contact_name',
                )
Run Code Online (Sandbox Code Playgroud)

视图.py

class JobCreateView(LoginRequiredMixin, CreateView): 
    template_name = 'job/job.html'
    form_class = JobCreationForm
    success_url = '/'

    def get_context_data(self, **kwargs):
        context = super(JobCreateView, self).get_context_data(**kwargs)
        # import the Customers of this Company
        self.fields["agency_name"].remove()
        recruiter = self.request.user
        self.fields["contact_name"].queryset = Profile.objects.filter(user_id = self.request.user)
        # if the user is a recruiter, delete the employer field.
        if Company.objects.filter(user_id = self.request.user).values('is_recruiter') == False:
            pass …
Run Code Online (Sandbox Code Playgroud)

python django form-fields django-class-based-views

2
推荐指数
1
解决办法
2002
查看次数