J'essaie d'accéder à un utilisateur authentifié dans une classe de formulaire. Je jouais en passant l'objet request d'une vue à la classe init, mais il semblait négligé. Existe-t-il un meilleur moyen d'accéder à l'utilisateur authentifié ou à l'objet de demande en dehors d'une vue?Accéder à un utilisateur authentifié en dehors d'une vue
class LicenseForm(forms.Form):
'''def __init__(self, *args, **kwargs):
#self.fields['license'] = forms.ModelChoiceField(queryset=self.license_queryset(), empty_label='None', widget=forms.RadioSelect())'''
def license_queryset():
queryset = License.objects.filter(organization__isnull=True)
# add addtional filters if the logged in user belongs to an organization
return queryset
licenses = forms.ModelChoiceField(queryset=license_queryset(), empty_label='None', widget=forms.RadioSelect())
J'ai modifié mon message original pour montrer le code avec lequel je travaille. Donc, dans la méthode license_queryset, je souhaite ajouter des filtres supplémentaires en fonction des associations d'utilisateurs authentifiés. Le commentaire __init__ est l'endroit où j'allais accepter l'objet de requête de la vue. – CrashRoX
Votre droite, cela semble plus propre. J'apprécie toute votre aide. J'ai joué avec la même approche de code plus tôt mais j'ai continué à rencontrer le problème de pouvoir accéder à self dans license_queryset. J'ai dû créer le champ de formulaire de licences dynamiquement dans init pour le contourner. Existe-t-il un moyen de faire en sorte que license_queryset ait une portée autonome et soit toujours capable de l'appeler à partir de la déclaration de formulaire de licence? Désolé si ce sont des questions newb. Juste commencer avec django et python :) – CrashRoX
@CrashRoX: Vous avez raison, j'ai oublié sur un point important. Changé. Lorsque vous définissez des méthodes de classe, vous devez toujours fournir au moins un paramètre (appelé 'self' pour plus de commodité). Plus tard, quand vous appelez cette fonction, vous n'avez pas besoin de la passer, c'est fait automatiquement. Cela pourrait vous aider à entrer dans le: http://docs.python.org/tutorial/classes.html –