2010-10-28 49 views
0

我使用Django的朋友和Django消息。Django友誼在郵件撰寫

我已經修改了我的自定義撰寫表單來提取以下信息myfriends並顯示其全名而不僅僅是用戶名。

我遇到的一個問題是,我似乎無法像登錄用戶那樣訪問自己,爲了完成查詢,我必須對其進行硬編碼。

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 

如何訪問我的用戶實例?

我曾嘗試將request添加到__init__並使用request.user,但這似乎不起作用。

任何想法?

回答

2

您可以在您的形式傳遞的要求,如:

form = MyComposeForm(request.POST,request) 
在views.py文件

,那裏的形式已經被實例化。然後,您可以訪問請求對象爲:

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

您的代碼如下:

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