Django -实际登录用户的会话密钥,不可能从请求中获得



如何获得session_key的形式类?不可能让请求参数做这样的事情:request.user

我已经得到了这种情况,我需要传递给功能get_user session_key,这也是无法从请求中检索。

class CustomEntryAdminForm(EntryAdminForm):
def get_user(session_key):
    session = Session.objects.get(session_key=session_key)
    uid = session.get_decoded().get('_auth_user_id')
    user = User.objects.get(pk=uid)
    return user

categories = MPTTModelMultipleChoiceField(
        label=_('Categories'), required=False,
        queryset=Category.objects.filter(groups__in=get_user('uwry5olhemchxnmwa36v10zt2bg9zeci').groups.all()),
        widget=MPTTFilteredSelectMultiple(_('categories'), False,
                                      attrs={'rows': '10'}))

使用pass user作为表单的关键字参数。您不需要跳过一些环节,从请求中加载活动会话密钥,然后从解码的会话中加载用户。你所需要做的就是:

在视图:

myform = MyFormClass(user= request.user)
在形式:

class MyFormClass(forms.Form):
    def __init__(self, *args, **kwargs):
        self.user = kwargs.pop('user', None)
        super(MyFormClass, self).__init__(*args, **kwargs)
        self.fields['categories'].queryset = Category.objects.filter(groups__in = self.user.groups.all())

注!不完整的工作代码。我只是想告诉你如何使用自我。查询集中的用户

相关内容

最新更新