2010-10-28 46 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)