Джанго дружба в сообщениях сочинения - PullRequest
0 голосов
/ 28 октября 2010

Я использую 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, но, похоже, это не работает.

Есть идеи?

1 Ответ

2 голосов
/ 28 октября 2010

Вы можете передать запрос в вашей форме, как:

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)
...