在未定义请求时获取登录用户

时间:2017-09-25 20:11:28

标签: django django-models django-forms

我很难找到一种方法让它发挥作用; 我需要获取查询集,其中包含当前登录用户创建的团队列表。

我的表格如下:

from django import forms
from django.contrib.auth.models import User
from registration.models import MyUser
from .models import Project, Team
from django.contrib.auth import get_user_model

User = get_user_model()



class EditSelectTeam(forms.Form):

    team_choice = forms.ModelChoiceField(widget=forms.RadioSelect, queryset=Team.objects.all().filter(team_hr_admin=request.User))
    #team_id = forms.ChoiceField(queryset = Team.objects.filter(team_hr_admin= MyUser))

    def team_select(self):
        data = self.cleaned_data['team_choice']
        return data

views.py:

def TeamSelect(request):
    if request.method == "POST":
        select_form = EditSelectTeam(request.POST)
        print('sucess')

    else:
        select_form = EditSelectTeam(request)
    return render(request,'link_project.html',
                            {'select_form':select_form })

我收到请求未定义的错误

1 个答案:

答案 0 :(得分:0)

您可以使用 init 方法传递请求,例如:

class EditSelectTeam(forms.Form):

    team_choice = forms.ModelChoiceField(widget=forms.RadioSelect, queryset=None)

    def __init__(self, request, *args, **kwargs):
        super(EditSelecTeam, self).__init__(*args, **kwargs)
        self.fields['team_choice'].queryset = Team.objects.all().filter(team_hr_admin=request.User))

    def team_select(self):
        data = self.cleaned_data['team_choice']
        return data

请记住在表单中传递以下请求:

form = your_form(request)