我正在使用django-friends和django-messages。
我已经修改了我的自定义撰写表单,以提取以下信息,我的朋友,并显示他们的全名,而不仅仅是用户名。
我有一个问题是,我似乎不能访问自己作为登录用户,以完成查询,我必须硬编码它。
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,但似乎不起作用。
有什么想法吗?
发布于 2010-10-28 16:57:50
您可以在表单中传递请求,如下所示:
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)https://stackoverflow.com/questions/4041042
复制相似问题