2017-09-25 41 views
0

我很難找到使其工作的方法; 我需要使用由當前登錄用戶創建的團隊列表來獲取查詢集。當請求未定義時,獲取已登錄的用戶

我看形式如下:

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 }) 

我得到的錯誤是請求沒有定義

+0

[創建動態選擇字段]的可能的複製(https://stackoverflow.com/questions/3419997/creating-a-dynamic-choice-field ) – georgeofallages

+0

我吮吸使用SO,但我認爲你可以在其他問題中找到你的答案。你可以重寫你的EditSelectTeam構造函數以將用戶存儲爲team_choice過濾嗎? – georgeofallages

回答

0

你可以通過使用初始化請求方法如:

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) 
+0

嗨Mauricio thx爲您的答案。現在,當我在我的表單中嘗試POST時,它說QueryDict的對象沒有屬性'user'。我用視圖更新了我的問題。任何想法 ? – Ben2pop

+0

select_form = EditSelectTeam(request,request.POST試一下,告訴我 –

+0

該過濾器正在工作? –

相關問題