2017-09-25 4 views
0

J'ai du mal à trouver un moyen de le faire fonctionner; Je dois obtenir le jeu de requête avec une liste de l'équipe créée par l'utilisateur actuellement connecté.Obtenez l'utilisateur connecté quand il n'y a pas de demande

Ma forme regardez ce qui suit:

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

Je reçois l'erreur cette demande est définit pas

+0

double possible de [Création d'un champ de choix dynamique] (https://stackoverflow.com/questions/3419997/creating-a-dynamic-choice-field – georgeofallages

+0

Je crains d'utiliser SO, mais je pense que vous pouvez trouver votre réponse dans cette autre question. Pouvez-vous remplacer votre constructeur EditSelectTeam pour stocker l'utilisateur pour le filtrage team_choice? – georgeofallages

Répondre

0

vous pouvez transmettre la demande à l'aide initialisation méthode comme:

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 

Rappelez passer votre formulaire de la demande comme:

form = your_form(request) 
+0

Salut Mauricio thx pour votre réponse. Maintenant, quand j'essaie le POST dans mon formulaire, il est dit que l'objet QueryDict 'n'a pas d'attribut' user '. J'ai mis à jour ma question avec la vue. Une idée ? – Ben2pop

+0

select_form = EditSelectTeam (demande, request.POST essayez avec cela et dites-moi –

+0

Le filtre fonctionne? –