2010-10-28 5 views
0

J'utilise django-friends et django-messages.Django amitié dans les messages composer

J'ai modifié mon formulaire de composition personnalisé pour tirer les informations suivantes, mes amis et afficher leurs noms complets au lieu de seulement les noms d'utilisateur. Un problème que j'ai est que je n'arrive pas à me connecter en tant qu'utilisateur connecté, pour compléter la requête, je dois le coder en dur.

class MyComposeForm(forms.Form): 
    """ 
    A simple default form for private messages. 
    """ 
    recipient = forms.ModelChoiceField(queryset=Friendship.objects.all(), label=_(u"Recipient")) 
    #recipient = forms.ModelChoiceField(queryset=User.objects.all(), label=_(u"Recipient")) 
    subject = forms.CharField(label=_(u"Subject")) 
    body = forms.CharField(label=_(u"Body"), 
     widget=forms.Textarea(attrs={'rows': '2', 'cols':'55'})) 

    def __init__(self, *args, **kwargs): 
     recipient_filter = kwargs.pop('recipient_filter', None) 
     super(MyComposeForm, self).__init__(*args, **kwargs) 
     ### underneath here I have to hardcode with my ID to pull the info. 
     friends = Friendship.objects.filter(from_user=1) 
     self.fields['recipient'].choices = [(friend.to_user.pk, friend.to_user.get_full_name()) for friend in friends] 
     if recipient_filter is not None: 
      self.fields['recipient']._recipient_filter = recipient_filter 

Comment puis-je accéder à mon instance d'utilisateur? J'ai essayé d'ajouter request à __init__ et en utilisant request.user mais cela ne semble pas fonctionner.

Des idées?

Répondre

2

Vous pouvez transmettre la demande dans votre formulaire comme:

form = MyComposeForm(request.POST,request) 

dans votre fichier views.py, où la forme a été instancié. Vous pouvez ensuite accéder à l'objet de la demande comme:

requestObj = kwargs.pop('request', None) 

votre code ressemblera:

def __init__(self, *args, **kwargs): 
    recipient_filter = kwargs.pop('recipient_filter', None) 
    requestObj = kwargs.pop('request', None) 
    super(MyComposeForm, self).__init__(*args, **kwargs)